我刚刚重新安装了 phplist,但是当我尝试在浏览器中访问它时,我得到一个带有状态代码的空页面:"500 Internal Server Error"
我正在运行 CentOS 7,并且 Phplist 正在使用 Php v5.6.33 的 Apache v2.4.6 上提供服务。
我可以在我的 apache 中看到查询access_log
,但 error_log 中没有条目。vhost 配置文件和.htaccess
文件似乎都正常。
请帮助我调试为什么 phplist 在全新安装后给我一个 500 错误。
在研究了 phplist 代码几个小时后,我通过在我的服务器上安装 libsodium 来解决这个问题。
首先,我发现——默认情况下——phplist 会禁止将错误写入日志。这在任何地方都没有记录,所以我在他们的文档页面上留下了一个注释,要求他们记录如何重新启用将错误消息写入日志文件(下面的链接)
因此,为了防止 phplist 抑制日志文件中的错误,您需要更改
error_reporting(0)
为error_reporting(1)
in'lists/admin/init.php'
和我在此处描述'lists/admin/index.php'
的。然后我能够看到文件在 apache
error_log
文件中引发了以下异常,该'lists/admin/inc/random_compat/random.php'
文件是random_compat
phplist 中包含的库的一部分。维护者的官方回应(参见 github 上 random_compat repo 的 issue #99)是简单地添加
'/dev/urandom'
到open_basedir
in'/etc/php.ini'
. 就个人而言,这似乎不是最明智的选择..或者,我决定安装 libsodium。在 CentOS 7 中,这意味着只需安装
'php-pecl-libsodium'
软件包并重新启动 apache 网络服务器。有关此错误的更多信息,请参阅我的文章,标题为fix phplist 500 error due to 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
最好的问候和好运!