nginx 没有指定输入文件

nginx 没有指定输入文件

当我尝试浏览 phpmyadmin 域时,我收到“未指定输入文件”的提示,不确定我做错了什么。使用 php-fpm 和 php-cgi,php-fpm 当前正在另一个目录中正常运行。必须将端口号更改为 8888,因为 -fpm 已经在使用 9000

http://pastebin.com/kdEckiL3

来自 nginx.conf:

server {
    listen 80;
    server_name phpmyadmin.domain.com;
    access_log /home/fanboy/logs/phpmyadmin.access_log;
    error_log /home/fanboy/logs/phpmyadmin.error_log;

location / {
    root /usr/share/phpmyadmin;
    index index.php;
    }

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:8888;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
    include /usr/local/nginx/conf/fastcgi.conf;
    }
}

答案1

更好的方法是将您的“根”行重新定位到位置块之外。

server {
    listen 80;
    server_name phpmyadmin.domain.com;
    access_log /home/fanboy/logs/phpmyadmin.access_log;
    error_log /home/fanboy/logs/phpmyadmin.error_log;

    root /usr/share/phpmyadmin;

    location / {
        index index.php;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:8888;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
        include /usr/local/nginx/conf/fastcgi.conf;
    }
}

显然,nginx 服务器配置不知何故错过了文档根目录设置。

这个想法来自PHP FastCGI 的 Nginx 配置指南

答案2

fastcgi.conf 将 SCRIPT_FILENAME 重新定义为 $document_root$fastcgi_script_name。如果您在服务器中设置根目录(只需删除“location / {”和匹配的 })并从 php 位置中删除 SCRIPT_FILENAME 行,它应该可以正常工作。

相关内容