【问题标题】:nginx + fast-cgi - how to make phpmyadmin worknginx + fast-cgi - 如何让 phpmyadmin 工作
【发布时间】:2013-05-08 00:53:51
【问题描述】:

我已经配置了我的 nginx 服务器 + php。一切正常,除了 phpmyadmin。

我搜索了很多,发现了一些别名技巧,但它们对我不起作用。

效果很好:

        location ~ ^/ololo/(.*\.php)$ {
                alias $root_path/img/$1;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $request_filename;
        }

        location /ololo/ {
                alias $root_path/img/;
                index index.php;
        }

我的站点路径中有img 目录,当我请求sitename/ololo/sitename/ololo/index.php 时,一切都很好。

但是:

         location ~ ^/myadmin/(.*\.php)$ {
                alias /usr/share/phpmyadmin/$1;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;

        }

        location /myadmin/ {
                alias /usr/share/phpmyadmin/;
                index index.php;
        }

不行!

当我尝试请求 mysite/myadmin/mysite/myadmin/index.php 时,服务器抛出了我

没有指定输入文件。

错误信息。在/usr/share/phpmyadmin/ 中都是.php 文件。

我的nginx.conf怎么了?

【问题讨论】:

    标签: nginx phpmyadmin fastcgi


    【解决方案1】:

    好的,根据我从您的回复中了解到的情况,我正在修改此答案,将其添加到您的主服务器,它应该可以工作。

    location /phpmyadmin {
        root /usr/share/;
        index index.php index.html index.htm;
        location ~ ^/phpmyadmin/(.+\.php)$ {
            try_files $uri =404;
            fastcgi_pass   unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
        }
    }
    

    编辑

    好的,所以一个不赞成的投票让我再次看了一下这个,我已经有一段时间没有写这个答案了,我应该说如果是今天的话,我不会这样写配置文件,这里是我将使用的配置。

    location /phpmyadmin {
        index index.php index.htm;
        root /usr/share;
    }
    
    location ~* \.php$ {
        include fastcgi_params;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
    }
    

    如果您想使用别名,请将 phpmyadmin 块替换为此

    location /phpmyadmin {
        index index.php index.htm;
        alias /usr/share/phpmyadmin;
    }
    

    注意:如果您的服务器块已经包含index,那么您不需要在phpmyadmin 块内重新定义它。

    【讨论】:

    • 你试过符号链接了吗?只要您有一个正常工作的默认服务器,就应该可以工作。应该类似于 ln -s /usr/share/phpmyadmin /var/www/ (或您的文件所在的位置)将使 domain.com/phpmyadmin 可访问
    • 好的,具体来说,这是本地主机还是带域的服务器?您是否尝试通过 (localhost/example.com)/phpmyadmin 访问它?
    • 它是带域的VPS(centos6 + nginx + php + ispmanager)。试图访问 example.com/phpmyadmin/(我将符号链接放在站点目录中)
    • 哇,这很好,但是为什么带有别名的相同代码不起作用?我不明白:(
    【解决方案2】:

    阅读评论顺序必须准确,如果仍然错误阅读error.log

    ### first define phpmyadmin static files
    location ~ ^/phpmyadmin/.*\.(jpg|jpeg|gif|png|ico|css|js|woff|ttf)$ {
            root /usr/share/;
            expires max;
            #log_not_found off;
    }
    
    ### then your public_html static file   
    location ~* \.(jpg|jpeg|gif|png|ico|css|js|woff|ttf)$ {
            root /path/public_html;
            expires max;
            #log_not_found off;
    }
    

    因为 public_html 之外的 phpmyadmin 路径,所以您需要 try_files 将斜杠 "/" 重定向到 "/index.php"

    location /phpmyadmin {
            try_files $uri $uri/ /phpmyadmin/index.php?$args;
    }
    

    现在是最后一个,fastcgi

    ### Define phpmyadmin PHP files
    location ~ ^/phpmyadmin/(.*)\.php$ {
        ## optional, try uncomment if error
        #root /usr/share/phpmyadmin/;
    
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/$fastcgi_script_name;
        include fastcgi_params;
    }
    
    ### then your public_html files 
    location ~ \.php$ {
        ##optional, try uncomment if error
        #root           /path/public_html;
    
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /path/public_html/$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    现在您可以通过http://yoursite/phpmyadmin 访问 phpmyadmin

    【讨论】:

      【解决方案3】:

      这是我的配置:

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

      【讨论】:

        猜你喜欢
        • 2021-03-04
        • 2011-04-26
        • 2014-08-16
        • 2011-08-13
        • 2012-04-07
        • 2021-10-23
        • 2017-10-29
        • 1970-01-01
        • 2013-05-02
        相关资源
        最近更新 更多