我刚刚全新安装了 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 错误。
答案1
在花了很多小时研究 phplist 代码之后,我通过在我的服务器上安装 libsodium 解决了这个问题。
首先,我发现默认情况下 phplist 将压制错误不会写入日志。这在任何地方都没有记录,所以我在他们的文档页面上留了一条注释,要求他们记录如何重新启用将错误消息写入日志文件(链接如下)
因此,为了防止 phplist 隐藏日志文件中的错误,您需要将其更改error_reporting(0)
为error_reporting(1)
in'lists/admin/init.php'
和'lists/admin/index.php'
as我在这里描述。
然后我能够看到该文件在 apacheerror_log
文件中抛出了以下异常,该文件是phplist 附带的库'lists/admin/inc/random_compat/random.php'
的一部分。random_compat
[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
维护人员的官方回应(请参阅 github 上 random_compat repo 的第 99 个问题)就是简单地添加'/dev/urandom'
到open_basedir
中'/etc/php.ini'
。就个人而言,这似乎不是最明智的选择。
另外,我决定安装 libsodium。在 CentOS 7 中,这意味着只需安装'php-pecl-libsodium'
软件包并重新启动 apache 网络服务器。
yum install php-pecl-libsodium
httpd -t && service httpd restart
有关此错误的更多信息,请参阅我的文章修复由于 random_compat 导致的 phplist 500 错误。
答案2
我从几个月前就遇到了这个错误,不得不安装旧版本的 phplist。
我刚刚发现 php 的新版本(我使用的是 php-5.2,但 centos 7 附带了 php-5.4)有一个名为“date.timezone”的新参数(好吧……对我来说是新的)。我的“/etc/php.ini”现在有:
date.timezone =“美洲/瓜亚基尔”
您可以在以下位置检查有效的时区名称:
http://php.net/manual/es/timezones.php
致以最诚挚的问候并祝你好运!