Ошибка 500 и PHP Warning Failed to write session data при переносе Joomla
название сайта
Авторизация

Ошибка 500 при переносе Joomla

+5
Вебмастер0 комментариев
Ошибки возникающие при переносе Joomla с одного хостинга на другой и их устранение, человеческим языком. 


Ошибки возникающие при переносе Joomla с одного хостинга на другой - картинка
С чего началась эта статья. Возникла необходимость высвободить системный блок который выполнял функцию веб сервера для одного сайта на Joomla. Упущу, как и что там было настроено.

Забыв за долгие годы что за зверь такой Joomla, я без зазрения совести перенес сайт на бесплатный хостинг, к надежному хостинг провайдеру beget.com. 

Не придав значения тому, что на хостинге есть ограничение на количество файлов, я успокоился. И занялся другими вопросами. 
Через несколько дней, бесплатный хостинг "поплющило" от большой нагрузки которую сгенерировала Joomla.

Лимит файлов на бесплатном хостинге - картинка

Пришлось думать куда и как сайт перенести обратно. 

Так как сайт тестовый и не несет особой нагрузки, я взял обычный десктоп попавшийся мне под руку, установил Ubuntu 16.04.6 LTS и бесплатную панель управления сайтами VestaCP. 


Перенос сайта на Joomla


  1. Залив архив файлов на собственноручно настроенный сервер,
  2. распаковал его из командной строки командой unzip,
  3. залил дамп базы данных, 
  4. отредактировал конфигурационный файл Joomla configuration.php лежащий в корне сайта.

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

Joomla не только не выдала мне сообщения что я допустил ошибку в настройках реквизитов для базы данных, она просто не выдала никаких ошибок на экране, кроме стандартной от VestaCP - Ошибка 500, но и нифига толком не писала в лог файл веб сервера. 



Ошибки при переносе Joomla на другой хостинг


Три основные ошибке которые допускают при переносе Joomla с хостинга на хостинг. 

  1. Права на папки файлы.
  2. Ошибки при редактировании конфигурационного файла Joomla.
  3. Кривизна самой 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 - картинка

Только после этих манипуляция я получил адекватную ошибку на экране, которая сообщил мне о том, что я неправильно вписал реквизиты пользователя базы данных. Ну с кем не бывает. :-)

Восстановив доступ к базе данных, перешел к следующей ошибке.


Ошибка в 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';

Причесав его я получил следующую ошибку. Это был апогей и апопиоз тупости который я видел.  wink 



PHP Warning Failed to write session data - Joomla 


Вот это настоящий шок, который испытывают начинающие админы и веб мастера.  smirk
Какую только хрень я не находил на просторах интернета в поисках решения. Люди пишут полный бред. 


Полная строка ошибки выглядела вот так:

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.


Нашли ошибки, неточности - пишите нам, мы всё исправим. 

Читайте также

Отметьте картинки:*
new.thin.kiev.ua
Авторизация