Восстановление работы сайта после переноса

В данной статье указаны только базовые действия для отладки работы ваших сайтов после переезда к нам от других хостеров. В любом случае вы всегда можете обратиться к нам в чат/тикет за советом или помощью.

Иногда после переноса сайтов от одного хостинг-провайдера к другому сайты бывают неработоспособными. Например, вместо сайта отображается белый экран, какие-либо ошибки, состоящие из непонятного кода, либо попросту «500 — Internal Server Error».

В данной статье рассмотрим базовую отладку работоспособности сайтов как после переноса, так и после установки CMS.

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

В данном руководстве будут рассмотрены 2 вида журналов ошибок:

  • журнал ошибок интерпретатора PHP
  • журнал ошибок веб-сервера

Если по доменному имени вашего сайта в браузере отображается пустое белое окно, то, скорее всего, есть место каким-либо ошибкам PHP, и мы рекомендуем сначала ознакомиться с первым разделом, а затем уже c третьим.

В случае ошибки, содержащей текст «500 Internal Server Error», необходимо прочесть второй и четвертый разделы данного руководства.

Журнал ошибок PHP

Журналом ошибок интерпретатора PHP является файл «error_log». Создается этот файл в текущей рабочей директории — там, где выполняется php-скрипт. В подавляющем большинстве случаев — это public_html.

Предварительно необходимо убедиться, что для PHP включено логирование (журналирование). Для этого необходимо перейти на главную страницу cPanel → раздел «Программное обеспечение и службы» → меню «Выбор версии PHP»:

Восстановление работы сайта после переноса

После этого вас переадресует на страницу подключения модулей (расширений) PHP. На этой странице необходимо перейти в «Опции PHP»:

Восстановление работы сайта после переноса

В окне редактирования опций PHP необходимо удостовериться в 2-х вещах:

a) Включено ли логирование ошибок PHP-интерпретатора:

Восстановление работы сайта после переноса

b) Выбран ли параметр «E-ALL» для логирования всех ошибок и предупреждений:

Восстановление работы сайта после переноса

Включите эти 2 параметра, если они не включены, нажмите кнопку «Save» внизу этой страницы.

Также не лишним будет включить параметр «display_errors».

Пока ошибок PHP при выполнении работы вашего сайта нет, данный файл не будет создан. Как только появятся какие-либо ошибки/уведомления, система автоматически создаст файл error_log и занесет в него соответствующие ошибки.

Так выглядит error_log в файловом менеджере cPanel:

Восстановление работы сайта после переноса

Ошибки PHP

Как показывает опыт и практика — ошибки PHP возникают по нескольким причинам:

  1. активна не та версия PHP, которую требует CMS для хостинговой учетной записи;
  2. не подключен какой-либо PHP-модуль (расширение);
  3. указано некорректное значение директивы PHP.

В случае если активна не та версия PHP, его нужно переключить, руководствуясь официальной документацией разработчика данной CMS (учитывая также текущую версию этой CMS).

Во втором случае некоторые CMS требуют различный набор подключаемых модулей для возможности её корректной работы. Стоит отметить, что подключаемые дополнения (plugins) также могут потребовать наличия тех или иных модулей php.

Разберем частный случай.

После установки Piwigo CMS сайт отражает текст:

Восстановление работы сайта после переноса

Стоит обратить внимание, что аналогичный текст ошибки, которую показал нам сайт, опираясь на «mysqli», фиксируется в лог-файл ошибок PHP — «error_log» (см. раздел 1). Фиксируется он каждый раз, когда производится обращение к сайту во время актуальности данной ошибки. Текст ошибки, извлеченный из error_log:

Восстановление работы сайта после переноса

В данной строке нас интересует выделенный жирным текст «mysqli», который является подключаемым расширением PHP. Как подключать расширения PHP к хостинговой учетной записи рассказано в статье о настройке PHP в cPanel.

Восстановление работы сайта после переноса

После включения этого расширения наш сайт корректно заработал:

Восстановление работы сайта после переноса

Обращаем ваше внимание, что в различных версиях PHP к подключению возможны различные модули. Это связано с тем, что с повышением версии некоторые модули либо устаревают, либо находят альтернативные решения для их замены, либо они уже включены в другие модули. Иногда CMS может работать и без требуемого PHP-расширения, однако она покажет ошибку, как только от нее потребуется функционал, воспроизведение которого может выполнить только пока не подключенное расширение. Зачастую CMS вам сама скажет имя модуля, необходимого к подключению.

Например, при попытке добавления картинки в Piwigo CMS мы получили такую ошибку:

Восстановление работы сайта после переноса

При включении данного модуля в расширениях PHP (не забываем сохранять внесенные изменения кнопкой «Сохранить»):

Восстановление работы сайта после переноса

CMS позволила приступить к загрузке картинки:

Восстановление работы сайта после переноса

Ошибки, связанные с переменными PHP, могут проявляться уже в процессе корректной работы сайтов. Например, при загрузке картинки размером в 6 МБ на CMS мы получили некорректное ее отображение:

Восстановление работы сайта после переноса

И запись в error_log вида:

Восстановление работы сайта после переноса

В данном случае есть связь с размером загружаемых файлов на CMS и директивой memory_limit (напоминаем, что это частный случай), позволяющей указать максимальный объем памяти в байтах, который разрешается использовать скрипту. Поэтому переходим к PHP опциям и изменяем значения параметров post_max_size, upload_max_filesize и memory_limit до значений, превышающих размер загружаемого файла.

Восстановление работы сайта после переноса

Не забываем сохранять внесенные изменения.

После этого графический файл корректно отработался в CMS:

Восстановление работы сайта после переноса

Журнал ошибок веб-сервера

В cPanel для просмотра журнала ошибок веб-сервера нет необходимости выполнять какие-либо дополнительные действия. Попасть в него можно следующим образом: главная страница cPanel → разлел «Журналы» → меню «Журнал ошибок»:


Восстановление работы сайта после переноса

Теперь мы знаем, куда стоит обращаться, чтобы получить информацию для отладки нашего сайта. Рассмотрим несколько вариантов ошибок.

500 — Internal Server Error

Возникновение ошибок подобного рода после переезда можно объяснить тем, что используемый нами веб-сервер Apache, обслуживающий хостинговые учетные записи виртуального хостинга/VIP-хостинга/реселлер-хостинга, работает с интерпретатором PHP, который в свою очередь работает в режиме suPHP. Поэтому это исключает какие-либо объявления PHP-флагов для переменных в конфигурационных файлах веб-сервера (файл .htaccess) и требует определенных прав на файлы и папки, включенных в контент сайта.

Некорректные права на директории и файлы

Одной из самых частых причин возникновения 500-й ошибки являются некорректные права на файлы и папки. Согласно режиму работы нашего интерпретатора PHP (suPHP), права на папки должны быть 0755, а на файлы — 0644.

Например, на файл index.php (тестировалось на Piwigo CMS) были выставлены некорректные права — 0777, в результате чего получали 500-ю ошибку и запись в журнале ошибок веб-сервера:

Восстановление работы сайта после переноса

Для устранения ошибки необходимо проверить файлы сайта и изменить права, если они некорректны. Изменить права можно двумя способами (также можно ознакомиться в статье об изменении прав доступа):

Смена прав доступа с помощью менеджера файлов cPanel

Для этого необходимо перейти в файловый менеджер по пути: домашняя страница cPanel → раздел «Файлы» — меню «Менеджер файлов». В дереве каталогов выделить файл/папку, права на которые необходимо изменить, и, нажав правую кнопку мыши, выбрать меню «Change permissions» (идентичная кнопка есть в меню этого менеджера файлов):

Восстановление работы сайта после переноса

Устанавливаем соответствующие права в появившемся окне:

Восстановление работы сайта после переноса

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

Как вариант, рекурсивно изменить права можно с помощью SSH-клиента, который доступен с домашней страницы cPanel. Для этого необходимо выполнить 2 команды, предварительно зайдя в нужный каталог контента вашего са:

find . -type f -exec chmod 644 {} \; рекурсивное изменение прав файлов относительно каталога, к которому применяется это изменение.

find . -type d -exec chmod 755 {} \; рекурсивное изменение прав директорий относительно каталога, к которому применяется это изменение.

SSH клиент по-умолчанию не активирован на наших серверах виртуального хостинга и активируется он только по запросу с аргументацией причины его включения.

Смена прав доступа с помощью FTP

Менять права доступа будем с помощью FileZilla. Руководство по подключению по FTP вы можете найти в статье о подключению к серверу через FileZilla.

После подключения с помощью FileZilla в дереве каталогов хостинга необходимо:

  • перейти к папке publiс_html;
  • выделить ее;
  • перейти в контекстное меню правой кнопкой мыши и выбрать »Атрибуты файла...»;
  • после этого появится диалоговое окно для изменения прав — выставить права, установив значение «755»; поставить галочку на «Перенаправить во вложенные каталоги»; выбрать «Применить только к каталогам», как показано на рисунке:
Восстановление работы сайта после переноса

В данном случае мы выставили рекурсивно права «0755» на папку public_html и вложенные в нее папки.

Аналогично нужно поступить и с файлами, как показано на рисунке ниже:

Восстановление работы сайта после переноса

После нажатия кнопки «ОК» начнется процесс изменения прав файлов/папок, находящихся на хостинге. Длительность процесса зависит от количества этих файлов/папок, поскольку производится их перебор и изменение атрибутов каждой единицы отдельно. Процесс завершится, как только окно статуса перестанет обновляться.

Наличие PHP-флагов в .htaccess

Также часто встречающейся причиной появления 500-й ошибки является наличие в .htaccess каких-либо PHP-флагов. Все, что касается интерпретатора PHP, должно быть настроено ТОЛЬКО либо в конфигурации PHP и расширениях PHP, либо настроено в собственноручно созданном php.ini-файле, который может быть актуальным только для того каталога, в котором он расположен.

Итак, в .htaccess нашего сайта настроено 3 флага PHP (по-умолчанию .htaccess находится в корневой папке вашего сайта, т.e. в самой /public_html/ ):

Восстановление работы сайта после переноса

В результате этого наш тестовый сайт «отдаёт» 500-ю ошибку:

Восстановление работы сайта после переноса

Журнал ошибок веб-сервера показывает нам следующие строки:

Восстановление работы сайта после переноса

Обратите внимание на выделенный жирным шрифтом текст, который свойственен для ошибок подобного рода. Он сообщает, что объявлена некорректная команда — «PHP-флаг».

После удаления (предпочтительнее комментировать строки символом «#») флагов в .htaccess, наш сайт возобновил свою работу:

Восстановление работы сайта после переноса
Восстановление работы сайта после переноса