Php
使用 Nginx 的別名導致 phpMyAdmin 登錄死循環
最近我一直在嘗試使用 Nginx 設置一個 Web 伺服器(我通常使用 Apache)。但是,我在嘗試將 phpMyAdmin 設置為alias時遇到了問題。別名也正確地將您帶到 phpMyAdmin 登錄螢幕,但是當您輸入有效憑據並點擊 go 時,您最終會返回登錄螢幕而沒有錯誤。
對我來說聽起來像是 cookie 或會話問題……但如果我符號連結 phpMyAdmin 目錄並嘗試通過符號連結版本登錄它工作正常!符號連結和別名都設置了相同數量的 cookie,並且兩者似乎都為正確的域和路徑設置了 cookie。
我的 php 別名的 Nginx 配置如下:
location ~ ^/phpmyadmin/(.*\.php)$ { alias /usr/share/phpMyAdmin/$1; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; }
- 我正在執行 Nginx 0.8.53
- PHP 5.3.3
- MySQL 5.1.47
- phpMyAdmin 3.3.9 - 自行安裝
- 並安裝了 php-mcrypt。
以前有沒有其他人經歷過這種行為?有人對如何解決它有任何想法嗎?
我有同樣的問題。我執行了一個帶有 doc root 的網站,
/var/www/somesite
並希望將 phpmyadmin 掛接到該網站上的某個子文件夾。我在 nginx 中使用此配置進行了嘗試:root /var/www/somesite; location /pma/ { alias /usr/share/phpmyadmin/; } location ~ ^/pma/(.+\.php)$ { alias /usr/share/phpmyadmin/$1; fastcgi_pass unix:/tmp/phpfpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; }
這似乎有效,但當我登錄時,就像你描述的那樣,我又看到了首頁。沒有錯誤,什麼都沒有。如果我使用錯誤的密碼登錄,我會收到“無法登錄 MySQL 伺服器”錯誤,正如您所期望的那樣。
解決方案
最後我所做的是我從所有的東西中拖進來
fastcgi_params
,發現改變DOCUMENT_ROOT
-parameter 解決了這個問題。於是上面的 nginx-config 改為:root /var/www/somesite; location /pma/ { alias /usr/share/phpmyadmin/; } location ~ ^/pma/(.+\.php)$ { alias /usr/share/phpmyadmin/$1; fastcgi_pass unix:/tmp/phpfpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; # From fastcgi_params fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT /usr/share/phpmyadmin; # <-- Changed fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param REDIRECT_STATUS 200; }
(旁注:我認為這是 nginx 的一個問題,您不能同時設置別名和文件根目錄。實際上很奇怪。)