Nginx

Nginx/php5-fpm/Debian 上的 PhpMyAdmin 500 內部伺服器錯誤

  • May 31, 2014

我前段時間下載了 PhpMyAdmin,但很難讓它工作。請求 localhost/phpmyadmin 會給出 500 Internal Server Error 響應,但錯誤日誌中沒有任何內容。

這些是我所做的步驟:

  1. 下載最新的 phpmyadmin 並將所有文件解壓縮到 /var/vhosts/phpmyadmin/www/
  2. 在 nginx 上創建了一個新的 php5-fpm 池和一個伺服器塊
  3. 更改了 phpmyadmin/ 中所有文件的所有者
  4. 嘗試請求 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 中。

引用自:https://serverfault.com/questions/599019