Ошибка 500 при переносе Joomla
Ошибки возникающие при переносе Joomla с одного хостинга на другой и их устранение, человеческим языком.
С чего началась эта статья. Возникла необходимость высвободить системный блок который выполнял функцию веб сервера для одного сайта на Joomla. Упущу, как и что там было настроено.
Забыв за долгие годы что за зверь такой Joomla, я без зазрения совести перенес сайт на бесплатный хостинг, к надежному хостинг провайдеру beget.com.
Не придав значения тому, что на хостинге есть ограничение на количество файлов, я успокоился. И занялся другими вопросами.
Через несколько дней, бесплатный хостинг "поплющило" от большой нагрузки которую сгенерировала Joomla.
Пришлось думать куда и как сайт перенести обратно.
Так как сайт тестовый и не несет особой нагрузки, я взял обычный десктоп попавшийся мне под руку, установил Ubuntu 16.04.6 LTS и бесплатную панель управления сайтами VestaCP.
Перенос сайта на Joomla
- Залив архив файлов на собственноручно настроенный сервер,
- распаковал его из командной строки командой unzip,
- залил дамп базы данных,
- отредактировал конфигурационный файл Joomla configuration.php лежащий в корне сайта.
И наивно полагал, что на этом перенос сайта будет закончен.
Такая самоуверенность была после множественных переносов и оптимизаций сайтов на DLE.
Єх, как же я был наивен.
Joomla не только не выдала мне сообщения что я допустил ошибку в настройках реквизитов для базы данных, она просто не выдала никаких ошибок на экране, кроме стандартной от VestaCP - Ошибка 500, но и нифига толком не писала в лог файл веб сервера.
Ошибки при переносе Joomla на другой хостинг
Три основные ошибке которые допускают при переносе Joomla с хостинга на хостинг.
- Права на папки файлы.
- Ошибки при редактировании конфигурационного файла Joomla.
- Кривизна самой Joomla.
Joomla права на папки и файлы
Первая ошибка в лог файле веб сервер выглядела так:
PHP Fatal error: require_once(): Failed opening required '/home/admin/web/thin.kiev.ua/public_html/administrator/includes/defines.php' (include_path='.:/usr/share/php') in /home/admin/web/thin.kiev.ua/public_html/administrator/index.php on line 37
Тем кто не в курсе как смотреть изменения лог файлов в Linux системах подсказка:
tail -f /var/log/apache2/domains/thin.kiev.ua.error.log
Так как данная ошибка мне мало о чем говорила, я решил выставить правильные права на распакованые файлы и папки.
В поисках информации о правильных правах на директории и файлы, я нашел простую и лаконичную композицию.
- 755 - для папок
- 644 - для файлов
- 444 - для файла configuration.php
Но посмотрев на количество папок и файлов в Joomla я прозрел. Трудно представить, сколько времени народ тратить на изменение атрибутов через ФТП клинт. Жесть.
Для того, чтобы выставление прав (chmod 755) для всех папок вложенных в текущую, я воспользовался командой:
find . -type d -exec chmod 755 {} \;
Для того, чтобы выставление прав (chmod 644) для всех файлов вложенных в текущую папку, я выполнил команду:
find . -type f -exec chmod 644 {} \;
Ну а права на конфигурационный файл configuration.php, я изменил средствами WinSCP.
Только после этих манипуляция я получил адекватную ошибку на экране, которая сообщил мне о том, что я неправильно вписал реквизиты пользователя базы данных. Ну с кем не бывает. :-)
Восстановив доступ к базе данных, перешел к следующей ошибке.
Ошибка в configuration.php Joomla
Посмотрев внимательно на конфигурационный файл Joomla, я понял что забыл исправить две директивы, которые отличались от настроек на старом хостинге.
public $log_path = '/home/admin/web/thin.kiev.ua/public_html/administrator/logs';
public $tmp_path = '/home/admin/web/thin.kiev.ua/public_html/tmp';
Причесав его я получил следующую ошибку. Это был апогей и апопиоз тупости который я видел.
PHP Warning Failed to write session data - Joomla
Вот это настоящий шок, который испытывают начинающие админы и веб мастера.
Какую только хрень я не находил на просторах интернета в поисках решения. Люди пишут полный бред.
Полная строка ошибки выглядела вот так:
PHP Fatal error: require_once(): Failed opening required '/home/admin/web/thin.kiev.ua/public_html/administrator/includes/defines.php' (include_path='.:/usr/share/php') in /home/admin/web/thin.kiev.ua/public_html/administrator/index.php on line 37
или так
PHP Warning: session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/home/admin/tmp) in /libraries/joomla/session/handler/native.php
А решение было не в версии PHP, не в изменении php.ini, лимитов времени и всего прочего. Достаточно было внести изменения в .htaccess и вуаля. Сайтик ожил.
Оказалось, что Joomla игнорировала настройки из своего конфигурационного файла:
public $tmp_path = '/home/admin/web/thin.kiev.ua/public_html/tmp';
А использовала для своей работы, глобальные настройки хостинга:
/home/admin/tmp
Правки файла .htaccess для Joomla
Я добавил в в самый верх файла .htaccess, лежащего в корневой директории сайта, следующие строки.
#включает вывод ошибок в браузере
php_flag display_errors on
#определяет уровень отображаемых ошибок
php_value error_reporting 2047
#отключает директиву register_globals
php_flag register_globals off
#переопределяет путь к каталогу хранения временных файлов "tmp" в Joomla
php_value session.save_path /home/admin/web/thin.kiev.ua/public_html/tmp
Вот таким способом, в сможете устранить все ошибки Joomla и перейти к танцам с бубном по работе с ней.
Думаю, что это не последний материал по Joomla, несмотря на то, что я не в восторге от данной CMS.
Нашли ошибки, неточности - пишите нам, мы всё исправим.