别名使用Nginx导致phpMyAdminlogin无限循环

最近我一直在尝试使用Nginxbuild立一个Web服务器(我通常使用Apache)。 不过,我遇到了一个问题,试图设置一个别名 phpMyAdmin。 这个别名正确地把你带到了phpMyAdmin的login界面,但是当你input有效的凭证并点击开始时,你最终会回到login界面,没有任何错误。

听起来像一个cookie或会话问题给我…但如果我符号链接phpMyAdmin目录,并尝试login通过符号链接的版本,它工作正常! 符号链接和别名都设置了相同数量的cookie,并且这两个设置似乎都为正确的域和path设置了Cookie。

我的Nginx的PHP别名configuration如下:

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安装。

有没有其他人经历过这种行为? 任何人有关于如何解决它的任何想法?

我有同样的问题。 我在/var/www/somesite运行了一个doc根目录的网站,并希望将phpmyadmin挂接到网站上的某个子文件夹。 我在nginx中用这个configuration试了一下:

 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; } 

这似乎工作,除了当我login,像你所描述的,我只是看到了头版。 没有错误,没有什么。 如果我用一个错误的密码login,我得到了一个“不能login到MySQL服务器” – 错误,如你所料。


最后我做的是我从fastcgi_params拖出所有的东西,发现改变DOCUMENT_ROOT参数解决了这个问题。 所以上面的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的一个问题,你不能同时设置别名和doc根,实际上是奇怪的。)

伊戈尔指出你的确切configuration应该工作:

http://forum.nginx.org/read.php?2,3059,3060#msg-3060

你可能会在那里张贴,看看他们要说什么; 你的configuration对我来说也是完全有效的。

如果你在Nginx + phpfpm下运行phpMyAdmin,肯定是所有权问题。 采取以下行动来解决它:
1.查看位于/etc/php-fpm.d/www.conf的php-Fpmconfiguration文件中的“session.save_path”值(默认值是“/ var / lib / php / session”)。 listen.owner用户和组必须拥有在那里定义的path文件夹。
2.运行“chown -R nginx:nginx / var / lib / php / session”作为sudo来修复它。
你现在应该可以login到phpMyAdmin没有任何问题。

这是我的configuration:

 location /phpmyadmin { alias /usr/share/phpmyadmin; index index.php; location ~ /([^/]+\.php)$ { try_files /$1 =404; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; location ~ /phpmyadmin/js/([^/]+\.php)$ { try_files /phpmyadmin/js/$1 =404; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } }