
我剛剛全新安裝了 phplist,但是當我嘗試在瀏覽器中訪問它時,我得到一個帶有狀態代碼的空白頁面:"500 Internal Server Error"
我正在運行 CentOS 7,並且 Phplist 在 Apache v2.4.6 和 Php v5.6.33 上提供服務。
我可以在我的 apache 中看到查詢access_log
,但 error_log 中沒有條目。虛擬主機設定檔和.htaccess
檔案似乎都正常。
請幫我調試為什麼 phplist 在全新安裝後給予 500 錯誤。
答案1
在研究了 phplist 程式碼幾個小時後,我透過在我的伺服器上安裝 libsodium 解決了這個問題。
首先,我發現 - 預設 - phplist 會壓制寫入日誌時出現錯誤。這沒有在任何地方記錄,所以我在他們的文檔頁面上留下了一條註釋,要求他們記錄如何重新啟用將錯誤訊息寫入日誌檔案(下面的連結)
因此,為了防止 phplist 抑制日誌檔案中的錯誤,您需要變更error_reporting(0)
為error_reporting(1)
in'lists/admin/init.php'
和'lists/admin/index.php'
as我在這裡描述了。
然後我可以看到error_log
該檔案在 apache 檔案中拋出以下異常,該檔案是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 儲存庫的第 99 期問題) 就是簡單地加到'/dev/urandom'
inopen_basedir
中'/etc/php.ini'
。就個人而言,這似乎不是最明智的選擇。
或者,我決定安裝 libsodium。在 CentOS 7 中,這意味著只需安裝'php-pecl-libsodium'
軟體包並重新啟動 apache Web 伺服器。
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
致以誠摯的問候,祝你好運!