Почему Phplist отвечает 500 Внутренняя ошибка сервера?

Я только что сделал новую установку phplist, но когда я пытаюсь получить к нему доступ в своем браузере, я получаю пустую страницу с кодом состояния: "500 Internal Server Error"

Я использую CentOS 7, и Phplist обслуживается на Apache v2.4.6 с Php v5.6.33.

Я могу видеть запрос в моем Apache access_log, но в error_log нет записей. Конфигурационный файл vhost и .htaccess все файлы кажутся нормальными.

Пожалуйста, помогите мне отладить, почему phplist выдает ошибку 500 после новой установки.

2 ответа

Решение

После долгих часов поиска кода phplist я исправил это, установив libsodium на свой сервер.

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

Поэтому, чтобы phplist не подавлял ошибки в файлах журналов, вы должны изменить error_reporting(0) в error_reporting(1) в 'lists/admin/init.php' а также 'lists/admin/index.php' как я описал здесь.

Тогда я смог увидеть следующее исключение в Apache error_log файл по 'lists/admin/inc/random_compat/random.php' файл, который является частью random_compat библиотека, которая включена в phplist.

[Thu Aug 23 00:06:29.560157 2018] [:error] [pid 17617] [client 127.0.0.1:51262] PHP Fatal error:  Uncaught exception 'Exception' with message 'There is no suitable CSPRNG installed on your system' in /var/www/html/phplist.opensourceecology.org/public_html/lists/admin/inc/random_compat/random.php:204\nStack trace:\n#0 /var/www/html/phplist.opensourceecology.org/public_html/lists/admin/defaultconfig.php(3): random_bytes(10)\n#1 /var/www/html/phplist.opensourceecology.org/public_html/lists/admin/index.php(103): require_once('/var/www/html/p...')\n#2 {main}\n  thrown in /var/www/html/phplist.opensourceecology.org/public_html/lists/admin/inc/random_compat/random.php on line 204

Официальный ответ от сопровождающих ( см. Вопрос № 99 о репозитории random_compat на github) - просто добавить '/dev/urandom' в open_basedir в '/etc/php.ini', Лично это не казалось самым мудрым вариантом..

В качестве альтернативы я решил установить libsodium. В CentOS 7 это означает просто установку 'php-pecl-libsodium' пакет и перезапуск веб-сервера Apache.

yum install php-pecl-libsodium
httpd -t && service httpd restart

Для получения дополнительной информации об этой ошибке, см. Мою запись под названием fix phplist 500 error из-за random_compat.

Я страдал с этой ошибкой, так как несколько месяцев назад мне пришлось устанавливать старые версии phplist.

Я только что обнаружил, что в новых версиях php (в моем случае я работал с php-5.2, но centos 7 поставлялся с php-5.4) появился новый параметр (ок... новый для меня), который называется date.timezone. Мой "/etc/php.ini" теперь имеет:

date.timezone = "Америка / Гуаякиль"

Вы можете проверить действительные названия часовых поясов по адресу:

http://php.net/manual/es/timezones.php

С уважением и удачи!

Другие вопросы по тегам