Nginx
Nginx/php5-fpm/Debian 上的 PhpMyAdmin 500 內部伺服器錯誤
我前段時間下載了 PhpMyAdmin,但很難讓它工作。請求 localhost/phpmyadmin 會給出 500 Internal Server Error 響應,但錯誤日誌中沒有任何內容。
這些是我所做的步驟:
- 下載最新的 phpmyadmin 並將所有文件解壓縮到 /var/vhosts/phpmyadmin/www/
- 在 nginx 上創建了一個新的 php5-fpm 池和一個伺服器塊
- 更改了 phpmyadmin/ 中所有文件的所有者
- 嘗試請求 localhost/phpmyadmin 和 localhost/phpmyadmin/setup
phpmyadmin 在 chroot 中執行,所有文件都歸 www-data 所有,所以它不應該是權限錯誤。
我在同一目錄中創建了一個新的 php 文件以產生錯誤,並且它記錄得很好,所以它必須只是 phpmyadmin。
這是我的 php5-fpm 池:
[phpmyadmin] listen = /var/vhosts/phpmyadmin/tmp/.php.sock; user = www-data group = www-data chroot = /var/vhosts/phpmyadmin/ chdir = / php_admin_value[error_reporting] = E_ALL php_admin_value[error_log] = error.log php_admin_flag[log_errors] = on php_admin_flag[display_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /tmp
和 Nginx 伺服器塊:
server { listen 80; root /var/vhosts/phpmyadmin/www; server_name pma.domain; location / { try_files $uri $uri/ /index.html; autoindex on; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_pass unix:/var/vhosts/phpmyadmin/tmp/.php.sock; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /www; } index index.html index.htm index.php; try_files $uri $uri/ =404; }
有什麼想法可能是錯的嗎?為什麼即使我強制它們打開它也不會產生任何錯誤?
我發現了錯誤,現在我只需要找出如何解決它。在 common.inc.php 中有以下行:
date_default_timezone_set(@date_default_timezone_get());
由於 chroot(我相信無法讀取 /usr/share/timezone),此功能不起作用,並且由於 @ 符號而不會產生錯誤。註釋掉該行會導致致命錯誤:
"date(): Timezone database is corrupt - this should never happen! in /www/libraries/core.lib.php on line 623"
. 如果找不到更好的解決方案,我想我必須將時區目錄複製到我擁有的每個虛擬主機上。**編輯:**使用 php-pear 安裝 timezonedb 以便能夠使用時區而無需將它們全部複製到 chroot 中。