我正在使用nginx设置phpMyAdmin。我可以在http://localhost/phpmyadmin访问phpMyAdmin。但是,当我登录时,网址会重定向到http://localhost/sql.php而不是http://localhost/phpmyadmin/sql.php。
我的/ var / www / html /文件夹中有phpMyAdmin符号链接。
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include /etc/nginx/snippets/fastcgi-php.conf;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
答案 0 :(得分:29)
您可以像编辑phpmyadmin配置文件一样简单,而不会过度使用NGINX
sudo nano /etc/phpmyadmin/config.inc.php
将以下代码添加到其中
$cfg['PmaAbsoluteUri'] = $_SERVER[HTTP_HOST].dirname($_SERVER[SCRIPT_NAME]);
致谢:xaz0r
答案 1 :(得分:26)
我今天在StackOverflow上实际上经历了很多解决方案,遗憾的是没有一个能够工作,有些甚至给出了一些可怕的建议。可怕的是我遇到过多少被标记为答案的人。
我刚刚做了一个全新的Ubuntu 16.04 LEMP服务器,今天早上干净安装了Nginx,mySQL,PHP7.0和PhpMyAdmin。
重定向到
的问题登录phpymadmin而不是后ħ**号码://my.server.ip/
根据您阅读的所有指南的建议,ħ**号码://my.server.ip/phpmyadmin
与cgi.fix_pathinfo设置为0 无关。请阅读有关为什么在php.ini文件中将其设置为0的更多内容,并且不要像上面那样去禁用它。
所以换句话说,在PHP的配置文件中留下(按照你的建议)cgi.fix_pathinfo = 0。
FIX from this web site(唯一一个有正确答案的人)是将以下内容添加到/ etc / nginx / sites-available / default配置文件中。然后重新启动Nginx ...立即工作,登录后不再重定向回root。
# Phpmyadmin Configurations
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
答案 2 :(得分:1)
将cgi.fix_pathinfo更改回1也为我解决了问题。但是,我不确定这是一个很好的解决方案,因为指南告诉:
"这是一个非常不安全的设置,因为它告诉PHP尝试执行它找不到所请求的PHP文件时可以找到的最接近的文件。这基本上允许用户以允许他们执行不应该被允许执行的脚本的方式来创建PHP请求。"
所以似乎应该有更好的解决方案,所以我不会在安全方面做出妥协。
本主题的第一篇文章对我不起作用。它只是禁用phpmyadmin ...所以目前我只剩下cgi.fix_pathinfo解决方法。
答案 3 :(得分:0)
有些指南教你必须在php.ini中启用cgi.fix_pathinfo
param并将其值设置为0
(这样才能有效地禁用它;))。我确实在我的php.ini文件上进行了这个更改。安装完phpmyadmin之后会发生重定向错误。
经过大量的搜索,我发现没有任何答案正常工作,我突然想到了我已经改变了cgi.fix_pathinfo
的值,我把它恢复到默认值并且没有奇怪的重定向。
答案 4 :(得分:0)
我也遇到了这个问题,我发现的所有解决方案看起来很像解决方法,一旦你更新phpmyadmin或nginx,它可能会破坏。因此我决定为phpmyadmin使用子域。
我的phpmyadmin现已在https://phpmyadmin.your-domain.com提供。这可能是一个开销,因为你需要添加子域并获得这个子域的证书,但至少在phpymadmin,nginx等更新的情况下它不会中断。
答案 5 :(得分:0)
使用Google一段时间后,只需打开 config.inc.php 并添加:
$cfg['PmaAbsoluteUri'] = 'your based uri';
一切正常!