Restore php bitrix 500 ошибка

Просмотров: 45176
Дата последнего изменения: 12.05.2022

Сложность урока:

3 уровень — средняя сложность. Необходимо внимание и немного подумать.

4

5

  Перенос сайта нештатными средствами

Перенос сайта на хостинг лучше всего выполнять встроенными в Bitrix Framework средствами резервного копирования/восстановления.

Несмотря на то, что фактически сайт на «1С-Битрикс: Управление сайтом» представляет из себя набор файлов и базу данных, копирование файлов напрямую на удаленный сервер в большинстве случаев будет не верным решением. Из-за большого количества мелких файлов такое копирование может растянуться на несколько часов. Кроме того, использование стандартных механизмов позволяет избежать последующих возможных проблем с правами доступа к файлам сайта.

Среди часто возникающих проблем:

  1. Веб-сервер не может записать в нужную ему папку или удалить временные файлы. Возможные последствия:
    • невозможность обновления продукта;
    • невозможность редактировать сайт через веб-интерфейс;
    • некорректная работа компонента кэширования;
    • и другие проблемы.

      Примечание: Например, встречаются даже такая ситуация, когда система создавала временные файлы, но права хостинга не позволяли удалить их. В результате через день работы аккаунт был заблокирован за превышение дисковой квоты.

      Самым простым решением в этом случае будет установка прав на все файлы и папки 777 (для Unix платформы) либо любой другой способ дать PHP запись на эти файлы.

  2. Нет возможности отредактировать через ftp/ssh файлы, созданные через веб-интерфейс. В этом случае многим веб-разработчикам будет сложно дорабатывать сайт.

    Одним из простых, но не всегда работающих решений, является установка параметров в файле dbconn.php, позволяющих всем редактировать создаваемые через Bitrix Framework файлы.

    define("BX_FILE_PERMISSIONS", 0666);
    define("BX_DIR_PERMISSIONS", 0777);

    Однако для файлов, созданных через ftp/ssh, вам придется периодически изменять права вручную. Либо, если хостинг это поддерживает, устанавливать параметр umask.

  Настройки PHP

При переносе сайта на хостинг могут возникнуть различные нюансы из-за настроек PHP:

  • Проблемы с несоответствием владельца файлов: на ряде хостингов PHP работает от имени одного пользователя, а доступ по ftp/ssh предоставлен другому. В этом случае файлы, созданные одним методом, могут быть недоступны для модификации, или вообще вызывать ошибку выполнения из-за нарушения параметров безопасности.
  • Проблемы с настройками безопасности: возможны различные варианты подключения PHP к веб-серверу, и в некоторых из этих вариантов устанавливаются жесткие ограничения на владельца файла и права на файл. В этом случае возможны ошибки с кодом 500, и разобраться в проблеме вам поможет только журнал ошибок веб-сервера.

    Пример: На многих хостингах, если PHP подключен как CGI, требуется соответствие владельца файла и прав на файл. Если владелец файла – не ваш аккаунт или права на файл допускают запись всем пользователям, PHP будет вызывать ошибку. В этом случае необходимо установить корректные права на файлы и папки, а также правильные параметры в dbconn.php.

  • Ограничения на время выполнения скрипта или на другие выделяемые ресурсы. В этом случае сайт может вести себя странно – то открываться, то не открываться и показывать белый экран.

    Пример: особо чувствительны к размеру памяти и времени выполнения различные скрипты импорта-экспорта данных. Если у вас возникают ошибки – проверяйте доступность ресурсов на хостинге, в случае их нехватки смените хостера.

  • Другие проблемы, специфичные для вашего хостера. Для их устранения рекомендуем заранее протестировать работу сайта на выбранном вами хостинге и заручиться контактами специалистов службы поддержки провайдера.

  Возможные проблемы при работе с многосайтовостью в Bitrix Framework

Проверьте, что ваш хостинг позволит организовать многосайтовость выбранным вами методом. Не все провайдеры позволяют корректно (для Bitrix Framework) создавать дополнительные сайты. Информацию об способах организации многосайтовости можно получить в учебном курсе Многосайтовость.

Проблемы с почтой

Некоторые хостинги не позволяют отправлять почту без авторизации. В этом случае для отправки письма с сайта вам необходимо будет переопределять функцию отправки почту в соответствии с документацией к продукту.

Распакованный сайт недоступен

После распаковки резервной копии на всём сайте отображается только форма авторизации. Возможные причины и решения:

  • Некорректное значение поля Путь к корневой папке веб-сервера для этого сайта в настройках сайтов (Настройки > Настройки продукта > Сайты > Список сайтов).

    Решение: в настройках сайта изменить значение поля Путь к корневой папке веб-сервера для этого сайта на соответствующий путь на новом хостинге, нажав на ссылку Вставить текущий. Оставьте поле пустым, если все сайты работают на одном веб-сервере.

  • Если перенос осуществлялся простым копированием файлов (FTP/SSH), мог не скопироваться файл .access.php. В данном файле хранятся права доступа групп пользователей к сайту, если данного файла нет, то для всех пользователей устанавливается право Запрещено.

    Решение 1: в корень сайта положить файл .access.php с содержимым:

    <?  $PERM["/"]["*"]="R"; ?>

    либо

    Решение 2: через файловый менеджер продукта в свойствах корневой папки сайта на вкладке Доступ установить для группы Все пользователи (в том числе неавторизованные) право Чтение.

Не полный архив

При просмотре архива, созданного штатной системой резервного копирования, через WinRar видно, что файлов в архиве гораздо меньше, чем на сайте.

Причина: дело в том, что у формата tar есть несколько диалектов. Система пакует архив в формате GNU tar, как это делает по умолчанию tar в Linux. WinRar понимает tar, но конкретно этот диалект поддерживает не полностью.

Резервный архив должен распаковываться системным restore.php, скачанным со страницы резервного копирования. Если и в этом случае часть файлов утеряна, проблему следует решать через техподдержку.

Ошибка ERROR 1062 (23000)

При распаковке резервной копии происходит ошибка: ERROR 1062 (23000) at line 1247: Duplicate entry '2-?' for key 2.

Причина: Ошибка происходит, если кодировка, в которой сделан архив, отличается от используемой на новом сервере баз данных.

  • Кодировка архива устанавливается в зависимости от содержимого файла /bitrix/php_interface/after_connect.php, например:
    <?
    $DB->Query("SET NAMES 'utf8'");
    ?>

    т.е архив будет создаваться в кодировке utf8.

  • Кодировку сервера баз данных можно увидеть в параметре character_set_server после выполнения SQL-запроса:
    show variables where Variable_name = 'character_set_server';

Обойти или устранить эту ошибку можно двумя способами:

  • В настройках нового сервера баз данных изменить кодировку в параметре character_set_server на ту, в которой сделан архив.

    Внимание! За выполнением этой операции возможно придется обратиться к администратору сервера.

  • Можно открыть архив в текстовом редакторе и в самое начало вставить строку:
    SET NAMES `utf8`;

    Кодировка выбирается в зависимости от кодировки архива.

    Внимание! Этот способ работает только в случае небольших дампов (которые успевают импортировать за один шаг).

Ошибки в .htaссess

Часть ошибок (например: ошибка 404 при переходе подробную информацию новостей), возникающих при переносе сайтов связана с тем, что при переносе файл .htaссess переименовывается с добавлением «_». Для решения проблемы достаточно проверить имя файла и, при обнаружении ошибки, восстановить его.

Если вы еще не восстанавливали/переносили Битрикс на свеженький (или не очень) сервер с PHP 7, то вы счастливый человек. Нет, сам Битрикс на PHP 7 работает более чем хорошо, я бы даже сказал, что намного лучше, чем на 5.X.

Т.е. все прекрасно, кроме самого процесса переноса. Если вы воспользуетесь официальным инструментом от Битрикса – скриптом restore.php, то столкнетесь с проблемами. Собственно, как только дело дойдет до восстановления базы данных – сервер упадает в 500 ошибку, а в логах появится следующая запись:

PHP Fatal error:  Uncaught Error:Call toundefined functionmysql_connect()in/var/www/html/restore.php:1328

Stack trace:

#0 /var/www/html/restore.php(670): CDBRestore->Connect()

#1 {main}

  thrown in/var/www/html/restore.php on line1328

Т.е. в скрипте по прежнему используется старая библиотекой php для работы с MySQL, вместо mysqli – уже как несколько лет обозначенной, как единственно верное и поддерживаемое решение.
А в PHP 7 больше нет поддержки старой библиотеки для mysql, это известно всем, кроме тех людей которые занимаются скрипом восстановления (я уверен, что им уже сказали, но пока они раскачаются…).

Решение тут понятно простое – восстановить базу руками, что, понятно, несложно. Нет один, два раза без проблем, но на десятый уже конечно надоедает.

Собственно решение тут одно, взять и поправить код скрипта, благо правок так немного. Что и было сделано:

  • Убран код, который скачивает свежую версию скрипта с Битрикса и подменяет текущий файл;
  • Собственно все старые не поддерживаемые функции заменены на аналоги из mysqli

Скачать: bitrix_restore_php7

Как только в Битрикс выпустят свою нормальную версию – ссылку заменю на официальный продукт.

Upd: Вышел официальный restore.php с поддержкой mysqli.

  1. Главная
  2. Заметки

21.11.2021

HTTP Error 500 при установке через restore.php

Пытаюсь установить Битрикс на хостинге и получаю в браузере ошибку HTTP Error 500. Панель управления хостингом FastPanel, VPS. Все по-умолчанию, никаких кастомных конфигураций не делал.

Решение:
Переключить в хостинг панели версию PHP на более новую версию (в данном случае переключил с php54 на php74) и всё заработало.

Автор проекта: Dimos
Заметки программиста, дизайнера, геймдев-мастера.
Делюсь опытом.



при переносе с тестового хостинга на боевой , когда заходим по ссылке http://имя_сайта/bitrix/admin/ или http://имя_сайта/bitrix/admin/index.php… выдаёт 500 ошибка Internal Server Error
при этом, если ввести http://имя_сайта/bitrix/admin/gfdggfdg, то уже заходит, выдаёт 404 в самой админке и уже можно по ней перемещаться и работать в ней. Есть идеи в чем дело, куда копать и как исправить?
ТП хостинга сказала, что у неё нет идей решения проблемы.

лог апача, который к этой проблеме относится:
[Tue Oct 08 16:57:32.512957 2019] [core:error] [pid 2283] [client 95.79.108.23:64931] End of script output before headers: index.php, referer: http://имя_сайта/bitrix/admin/

код файла .htaccess:

Options -Indexes 
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
  php_flag session.use_trans_sid off
  #php_flag default_charset UTF-8
  #php_value display_errors 1
</IfModule>

<IfModule mod_php7.c>
  php_flag session.use_trans_sid off
  #php_flag default_charset UTF-8
  #php_value display_errors 1
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
			
	# ASPRO_ROBOTS Serve robots.txt with robots.php only if the latter exists
	RewriteCond %{REQUEST_FILENAME} robots.txt
	RewriteCond %{DOCUMENT_ROOT}/robots.php -f
	RewriteRule ^(.*)$ /robots.php [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"  
</IfModule>

Если вы еще не восстанавливали/переносили Битрикс на свеженький (или не очень) сервер с PHP 7, то вы счастливый человек. Нет, сам Битрикс на PHP 7 работает более чем хорошо, я бы даже сказал, что намного лучше, чем на 5.X.

Т.е. все прекрасно, кроме самого процесса переноса. Если вы воспользуетесь официальным инструментом от Битрикса – скриптом restore.php, то столкнетесь с проблемами. Собственно, как только дело дойдет до восстановления базы данных – сервер упадает в 500 ошибку, а в логах появится следующая запись:

PHP Fatal error:  Uncaught Error:Call toundefined functionmysql_connect()in/var/www/html/restore.php:1328

Stack trace:

#0 /var/www/html/restore.php(670): CDBRestore->Connect()

#1 {main}

  thrown in/var/www/html/restore.php on line1328

Т.е. в скрипте по прежнему используется старая библиотекой php для работы с MySQL, вместо mysqli – уже как несколько лет обозначенной, как единственно верное и поддерживаемое решение.
А в PHP 7 больше нет поддержки старой библиотеки для mysql, это известно всем, кроме тех людей которые занимаются скрипом восстановления (я уверен, что им уже сказали, но пока они раскачаются…).

Решение тут понятно простое – восстановить базу руками, что, понятно, несложно. Нет один, два раза без проблем, но на десятый уже конечно надоедает.

Собственно решение тут одно, взять и поправить код скрипта, благо правок так немного. Что и было сделано:

  • Убран код, который скачивает свежую версию скрипта с Битрикса и подменяет текущий файл;
  • Собственно все старые не поддерживаемые функции заменены на аналоги из mysqli

Скачать: bitrix_restore_php7

Как только в Битрикс выпустят свою нормальную версию – ссылку заменю на официальный продукт.

Upd: Вышел официальный restore.php с поддержкой mysqli.

21.11.2021

HTTP Error 500 при установке через restore.php

Пытаюсь установить Битрикс на хостинге и получаю в браузере ошибку HTTP Error 500. Панель управления хостингом FastPanel, VPS. Все по-умолчанию, никаких кастомных конфигураций не делал.

Решение:
Переключить в хостинг панели версию PHP на более новую версию (в данном случае переключил с php54 на php74) и всё заработало.

Автор проекта: Dimos
Заметки программиста, дизайнера, геймдев-мастера.
Делюсь опытом.

При попытке запустить битрикс файл restore.php получаю ошибку Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.
Первоначально ошибку связывал с тем, что сайт был создан в однобайтовой кодировке, а файл restore.php был в кодировке UTF-8
В результате сервер не мог обработать запрос. После смены кодировки файла restore.php на WINDOWS-1251 проблема не была решена.

В итоге выяснилось, что домен был направлен на другой чужой аккаунт этого же хостинга и для привязки домена к моей услуге хостинга, нужно подтвердить владение им, написав заявку в тех. поддержку с контактного email владельца домена.
.

500 Internal Server Error.png

11.06.2023
Проблема кеширования битрикс меню подразделов
В новой версии обновления битрикс вылезла проблема с кешем меню выпадающих пунктов раздела (меню вида .тип_меню.menu_ext.php). При переходе по ссылкам в боковом меню раздела всегда будет подменю раздела на который зашли впервые и после этого наглухо закешируется, т.е. пункты подменю всегда одни и теже и не меняются. Отключать кеширование компонента не есть правильно, и не рекомендуется.
ID: 459

08.06.2023
Один важный Seo совет владельцам битрикс сайтов
Владельцам битрикс сайтов редакции от Стандарт и выше, я рекомендую отключать редиректы в проактивной защите для /bitrix/redirect.php и /bitrix/rk.php
ID: 458

04.06.2023
SLAM Продуманная форма обратной связи
На днях обнаружил, что многие бесплатные модули пропали из маркетплейс когда битрикс отключил их из-за отсутствия поддержки РНР 8.1. Хороший модуль SLAM Продуманная форма обратной связи пал в неравной борьбе
ID: 457

Просмотров: 32842
Дата последнего изменения: 22.07.2020

Сложность урока:

3 уровень — средняя сложность. Необходимо внимание и немного подумать.

4

5

Ошибка сервера может быть вызвана различными причинами, поэтому ее диагностика достаточно сложна и трудоемка. Это не является ошибкой «1С-Битрикс: Управление сайтом». Она часто возникает на разделяемом хостинге из-за ограничения ресурсов системы.

При возникновении ошибки сервера в первую очередь необходимо просмотреть файл сервера error.log. В этом файле может содержаться строка с кодом ошибки.

  • Типичным примером причины возникновения ошибки сервера может быть превышение разрешенных прав на хостинге.

    Например, происходит попытка выполнить файл с атрибутами, не разрешёнными для запуска на сервере (например, файл имеет атрибуты 0755, а допускается 0711).

  • Также возможной причиной может быть наличие лимита по времени на исполнение php-скриптов;
  • Или у системы нет прав на запись или чтение файла и др.
  • Другой распространенной причиной возникновения внутренней ошибки сервера является нарушение конфигурации сервера или попытка использования неразрешенных инструкций, например, в файле .htaccess. В этом случае необходимо закомментировать либо удалить строку, содержащую неразрешенную директиву, в соответствующем файле (например, .htaccess).
  • Обратите внимание, если PHP работает как CGI, то 500 ошибка на сервере может быть вызвана фатальной ошибкой PHP. В этом случае рекомендуется выполнить проверку программного кода и диагностировать ошибку.
  • Внутренняя ошибка сервера может возникнуть при запуске из-под Apache CGI-скрипта, время исполнения которого превышает время, отведенное на выполнение скрипта в настройках сервера.

Таким образом, всё зависит от конфигурации сервера.

Важно понимать, указанные ограничения не настраиваются через настройки PHP в php.ini.

В нормальной ситуации такая ошибка и её причина фиксируется в логах сервера. В этом случае пользователю рекомендуется обратиться к хостеру с просьбой указать, что является причиной возникновения ошибки и попросить её устранить (например, увеличить ресурсы). Если хостер не смог найти решение — обратитесь в техподдержку компании «1С-Битрикс» с точным указанием того, как ошибка происходит и какие причины указал хостер. Без указания причины ошибки техподдержка помочь вам не сможет.


8

ответов

возможно вконце файла добавить ?>


Сергей Омелянчук

возможно вконце файла добавить ?>

Добавил, ничего не поменялось


wywwyw

Добавил, ничего не поменялось

У меня на днях была ситуация такая же с ним, раскатил в итоге на php 7.4, добавил в конце то что писал выше и вначале файла <?php поменял на <? после этого ошибка ушла.


Сергей Омелянчук

возможно вконце файла добавить ?>

И пробелов еще потом.
Закрывающий тег ?> в конце файла вреден.


Eugene Zhukov

И пробелов еще потом.
Закрывающий тег ?> в конце ф…

соглашусь, но у меня ругалось именно на этот момент


Сергей Омелянчук

У меня на днях была ситуация такая же с ним, раска…

уфффф…а просто перенести файлы и дамп бд загрузить, так заработает? просто всегда делал через restore php


Сергей Омелянчук

соглашусь, но у меня ругалось именно на этот момен…

На отсутствие закрывающего? А текст ошибки показать можете?

Вот на конструкцию
<?phpмой код без переноса строки или комментарий
— да, падает.


Eugene Zhukov

На отсутствие закрывающего? А текст ошибки показат…

сейчас попытался воспроизвести, всё завелось с дефолтным файлом 🤷‍♂️

Похожие вопросы

Понравилась статья? Поделить с друзьями:
  • Resident evil 5 ошибка xlive dll
  • Remote desktop произошла внутренняя ошибка
  • Rest api статусы ошибок
  • Regedit ошибка при изменении параметра
  • Rest api выдал ошибку вордпресс