Я только что сделал новую установку 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 после новой установки.
После того, как я копался в коде 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
Дополнительную информацию об этой ошибке см. В моей статье под названием исправить ошибку phplist 500 из-за 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
С уважением и удачи!