NGINX + php7.0-fpm + phpmyadmin

NGINX + php7.0-fpm + phpmyadmin

免责声明:我尝试了前两页谷歌搜索结果中列出的所有技巧。但对我都不起作用。这不是重复的。

我在安装了 LAMP 的 LXC 容器中运行 Debian 9,今天我想用 php-fpm 和 nginx 替换 apache2。问题是我根本无法让这个配置工作。

“默认”虚拟主机已禁用(启用站点时不存在文件/符号链接)

当前配置(sites-enabled/phpmyadmin):

server {
    listen 127.0.0.1:80;
    root /home/fakeuser/fakepath;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;

    location ~\.php$ {
            include snippets/fastcgi-php.conf;
            #fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/$fastcgi_script_name;
            fastcgi_pass  unix:/run/php/php7.0-fpm-phpmyadmin.sock;
            include fastcgi_params;
    }

    location /phpmyadmin {
        alias /usr/share/phpmyadmin;

        location ~\.php$ {
            include snippets/fastcgi-php.conf;
            #fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/$fastcgi_script_name;
            fastcgi_pass  unix:/run/php/php7.0-fpm-phpmyadmin.sock;
            include fastcgi_params;
        }
    }

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }
}

当我尝试打开时:

localhost/index.php

我将 index.php 下载到我的电脑上

当我尝试打开时:

localhost/phpmyadmin/index.php

我收到“文件未找到”的信息,并且此条目

/var/log/nginx/error.log


2018/09/17 19:22:37 [error] 27804#27804: *4 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /phpmyadmin/index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm-phpmyadmin.sock:", host: "localhost"

更新:我检查了 php-fpm 的日志,它每次都将其打印到日志中:

- - 20/Sep/2018:21:03:26 +0000 "GET /phpmyadmin/index.php" 404

我不知道我做错了什么,www-data 用户可以访问该目录中的所有内容,到目前为止我已经检查了 5 次。

答案1

查看您的配置,我不确定您的 nginx 指令 fastcgi_pass 和 fastcgi_param 是否正确。

尝试一些更简单的方法,例如:

location ~* \.php$ {
    include /etc/nginx/fastcgi.conf;
    include /etc/nginx/fastcgi_params;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
   }

如果您的 php-fpm 正在监听端口 9000 或将其指向正确的套接字路径(在 fpm conf 文件中定义)

另外,请检查文件 /run/php/php7.0-fpm-phpmyadmin.sock 是否存在。我的印象是默认的 php7 套接字路径是 unix:/run/php/php7.0-fpm.sock。您可能还需要检查其他内容,例如 php.ini。请尝试按照本教程的 nginx 如何操作部分进行操作: https://www.howtoforge.com/tutorial/installing-nginx-with-php7-fpm-and-mysql-on-ubuntu-16.04-lts-lemp/

相关内容