在 nginx 上使用 php7-fpm “未指定输入文件”
Posted
技术标签:
【中文标题】在 nginx 上使用 php7-fpm “未指定输入文件”【英文标题】:"no input file specified" with php7-fpm on nginx 【发布时间】:2018-05-26 15:30:40 【问题描述】:我是 nginx 新手并在其上安装 phpmyadmin。我在 Debian 伸展发行版上。我在尝试访问 /phpmyadmin
时遇到的 no input file specified
错误在 *** 上一遍又一遍地出现,但它们似乎都是较旧的帖子。试图从网络上的许多不同建议中拼凑出正确的配置是一场噩梦。我尝试了一些提到的解决方案,但没有一个对我有用。这是我的完整配置文件:
server
gzip on;
gzip_types text/plain text/html text/css application/javascript;
root /home/me/projects/MyApp/public;
location /
try_files $uri @proxy;
expires max;
location @proxy
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:5000;
location /phpmyadmin
alias /usr/share/nginx/html/phpmyadmin;
index index.php index.html;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
location ~ /\.ht
deny all;
【问题讨论】:
snippets/fastcgi-php.conf
中包含什么?您可能需要添加fastcgi_param SCRIPT_FILENAME $request_filename;
啊,我只是认为这是一些标准文件,并没有费心去看。没有该名称的文件。我用你的建议替换了配置文件中的那一行。我现在得到一个空白页。但我更接近。谢谢!
您可能会发现一个名为fastcgi_params
的文件,其中包含许多PHP 必需的fastcgi_param
定义。
是的,几分钟前刚刚在 /etc/nginx/fastcgi_params 中找到它。我将其包含在我的配置中。现在我得到一个只显示“拒绝访问”的空白网页。
呃,将cgi.fix_pathinfo
设置回php.ini 中的默认设置,现在网页上出现“找不到文件”消息。我现在真的很想念apt-get。
【参考方案1】:
好的,这是我的配置文件中至少可以与 phpmyadmin 一起工作的部分(我不能保证它是安全的):
location /phpmyadmin/
alias /usr/share/nginx/html/phpmyadmin/;
index index.php index.html;
location ~* \.php$
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
location ~ /\.ht
deny all;
我还必须在我的 php.ini 文件中注释掉我根据一些在线教程的建议取消注释掉的一行:
cgi.fix_pathinfo=0
到
;cgi.fix_pathinfo=0
【讨论】:
在 Ubuntu 17.10 和 PHP7.0 上绝对正确且有效 这应该是公认的答案。来自我的 +1以上是关于在 nginx 上使用 php7-fpm “未指定输入文件”的主要内容,如果未能解决你的问题,请参考以下文章
如何在CentOS 7中使用Nginx和PHP7-FPM安装Nextcloud
如何在CentOS 7中使用Nginx和PHP7-FPM安装Nextcloud
markdown 使用PHP7-FPM和XDebug设置Nginx的快速指南
如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud