Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
登录后phpmyadmin错误重定向的Nginx_Php_Nginx_Phpmyadmin - Fatal编程技术网

登录后phpmyadmin错误重定向的Nginx

登录后phpmyadmin错误重定向的Nginx,php,nginx,phpmyadmin,Php,Nginx,Phpmyadmin,我正在和nginx建立phpMyAdmin。我可以访问phpMyAdmin在。但是,当我登录时,URL被重定向到而不是 我的/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

我正在和nginx建立phpMyAdmin。我可以访问phpMyAdmin在。但是,当我登录时,URL被重定向到而不是

我的/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;
    #}
}

一些指南告诉您必须在php.ini中启用
cgi.fix_pathinfo
param,并将其值设置为
0
(这样可以有效地禁用它;)。我在php.ini文件上也做了这个更改。安装phpmyadmin后,会发生重定向错误


在进行了大量搜索之后,我发现所有答案都不起作用,我突然想到我已经更改了
cgi.fix\u pathinfo
的值,我把它恢复到默认值,瞧,没有奇怪的重定向。

我实际上已经经历了很多关于StackOverflow的解决方案,不幸的是,这些都不起作用,有些甚至给出了一些可怕的建议。可怕的是我遇到了多少被标记为答案的人

我刚刚做了一个全新的Ubuntu16.04LEMP服务器,所有的东西都在今天早上干净地安装了Nginx、mySQL、PHP7.0和PhpMyAdmin

这个问题是重定向到

h**p://my.server.ip/

在登录到phpymadmin而不是

h**p://my.server.ip/phpmyadmin

实际上与您阅读的所有指南建议的将cgi.fix_pathinfo设置为0无关。阅读更多关于为什么应该在php.ini文件中将其设置为0的内容,而不是像上面那样去禁用它

换句话说,在PHP的配置文件中保留(向您推荐)cgi.fix_pathinfo=0

解决方案是将以下内容添加到/etc/nginx/sites available/default配置文件中。然后重新启动Nginx。。。立即工作,登录后不再重新定向回根目录

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

将cgi.fix_pathinfo更改回1也解决了我的问题。但是,我不确定这是否是一个好的解决方案,因为指南告诉我:

“这是一个非常不安全的设置,因为它告诉PHP,如果找不到请求的PHP文件,则尝试执行它能找到的最接近的文件。这基本上允许用户以允许他们执行不允许执行的脚本的方式处理PHP请求。”

因此,似乎应该有一个更好的解决方案,这样我就不必在安全问题上妥协


这个主题的第一篇文章对我不适用。它只是禁用了phpmyadmin。。。因此,目前我只剩下cgi.fix_pathinfo解决方案。

您只需编辑phpmyadmin配置文件即可,而不会影响NGINX

  • 打开config.inc.php文件
    sudo nano/etc/phpmyadmin/config.inc.php

  • 向其中添加以下代码

    $cfg['pmaabsubluteuri']=$\u服务器[HTTP\u主机].dirname($\u服务器[SCRIPT\u名称])

  • 完成


信用证:

我也遇到了这个问题,我找到的所有解决方案看起来都很像权宜之计,一旦更新了phpmyadmin或nginx,这些权宜之计可能会失效。因此,我决定为phpmyadmin使用一个子域


我的phpmyadmin现在可以在上找到。这可能会有一点开销,因为您需要添加子域并获取该子域的证书,但至少在phpymadmin、nginx等出现更新时不会中断。在google运行一段时间后,只需打开config.inc.php并添加:


一切都很完美

当我希望在url
site.com/myuniqupage
下有phpmyadmin而不是
site.com/phpmyadmin
时,如何配置
/etc/nginx/sites available/default
?对我来说不起作用。还有,奇怪的“添加这一行”是怎么回事?是否应该启用该功能?(不,仍然不起作用)我已经更正了代码块,删除了两个注释掉的行,因为它们不需要。要回答Jasom Dotnet,您需要将此代码块放在网站“site.com”的服务器{}块中并进行测试,它应该可以正常工作。MitchellK我不确定您是否回答了@Jason Dotnet的问题,如果不使用默认的/phpmyadmin路径怎么办?我必须改变什么?我用默认值和我自己的路径尝试了你的答案,都返回了404。(离开第一个“地点”永远是我自己的路径)为迟来的回复道歉,我和我非常有意愿的父亲在医院来回奔波了6个星期,压力很大。这篇文章应该回答关于将phpmyadmin移动到其他位置的问题-这对于生产来说太不安全了,您必须找到另一个解决方案。这应该是公认的答案。此外,如果这不起作用,请尝试将代码放在/var/lib/phpmyadmin/config.inc.php中,不确定为什么PMA有两个可能的配置位置(哑af),但它就是这样。需要有人重写/更新这个伟大的工具。这也行得通。但问题是根据linux使用系统文件夹的最佳实践,配置(.conf文件等)使用“/etc”。在这里可以找到系统的所有配置和设置。“/var”通常用于日志文件、“临时”文件(如邮件假脱机、打印机假脱机等)、数据库以及与特定用户无关的所有其他数据。日志通常在“/var/log”中,数据库在“/var/lib”(mysql-“/var/lib/mysql”)中,等等。信用:完全同意,我希望PMA开发者遵守协议。作为一个真正重视正确和理智的组织的人,代码库乍一看是相当可怕的。我还刚刚了解到,如果找不到配置文件,PMA将默认为/usr/share/phpmyadmin/libraries/config.default.php,其中规定不应编辑它,但会忽略根目录(config.sample.php所在位置)中的自定义配置。如果删除了/var/lib/phpmyadmin文件夹,您会立即知道是否有任何问题吗?还应该添加$cfg['P]
$cfg['PmaAbsoluteUri'] = 'your based uri';