为什么 Phplist 响应 500 内部服务器错误?

为什么 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 错误。

答案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

致以最诚挚的问候并祝你好运!

相关内容