Nginx+PHP-FPM报“No input file specified”本质是PHP-FPM找不到PHP文件路径,主因是SCRIPT_FILENAME配置错误:alias下应改用$request_filename而非$document_root,并需在alias location块内单独定义PHP处理段、检查权限及开启日志定位。

这是 Nginx 配合 PHP-FPM 时的常见报错,本质是 PHP-FPM 找不到要执行的 PHP 文件路径,通常由 fastcgi_param SCRIPT_FILENAME 配置错误导致,而非 PHP 或文件本身有问题。
检查 fastcgi_param SCRIPT_FILENAME 是否正确
Nginx 默认配置中,SCRIPT_FILENAME 常写成 $document_root$fastcgi_script_name。但虚拟目录(alias)下,$document_root 仍指向 root 路径,而实际 PHP 文件在 alias 指向的目录里,造成路径拼接错误。
- 若使用
alias /data/www/app/;,应将 SCRIPT_FILENAME 改为:
fastcgi_param SCRIPT_FILENAME /data/www/app$fastcgi_script_name; - 不要用
$document_root,它不随 alias 变化;必须硬编码或用$request_filename(更稳妥) - 推荐写法:
fastcgi_param SCRIPT_FILENAME $request_filename;
因为$request_filename是 Nginx 内部解析后的绝对磁盘路径,天然适配 alias 和 root
确认 location 匹配和 try_files 是否干扰
虚拟目录常通过 location ^~ /subpath/ { alias ...; } 定义。若后面有全局 PHP location(如 location ~ \.php$),需确保它能被该块继承或显式包含。
- 避免把 PHP location 写在 server 级别却期望它自动作用于 alias 块内——Nginx location 不继承,必须在 alias 的 location 块内重新定义或 include
- 如果用了
try_files $uri =404;,确保它放在 PHP 处理前,且不拦截 .php 请求;否则请求可能被直接返回 404 或跳过 fastcgi_pass - 典型安全写法:
location ^~ /subpath/ {
alias /data/www/app/;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass 127.0.0.1:9000;
}
}
验证 PHP-FPM 用户是否有文件读取权限
即使路径拼对了,若 PHP-FPM worker 进程用户(如 www-data、nginx)无法读取目标 PHP 文件或其所在目录,也会返回 “No input file specified”(注意:不是 Permission denied)。
- 用命令检查:
sudo -u www-data ls -l /data/www/app/index.php
确保文件可读,且各级父目录有可执行(x)权限(Linux 目录需 x 才能 cd 进入) - 常见陷阱:目录属主是 root,权限 755,但 PHP-FPM 运行用户不在同组;此时需调整属组或加读权限
- 临时测试可 chmod 755 目录 + 644 文件,确认是否权限问题
开启 Nginx 和 PHP-FPM 日志辅助定位
仅看错误页信息有限,需打开详细日志观察真实路径和处理流程。
- 在对应 server 或 location 块中加:
error_log /var/log/nginx/subpath_error.log notice;
并重启 Nginx - 在 php-fpm.conf 或 pool 配置中启用 access log:
access.log = /var/log/php-fpm/subpath_access.log
并确保log_level = notice或更低 - 访问页面后查看日志,重点关注:
— Nginx error log 中 “FastCGI sent in stderr” 后的路径
— PHP-FPM access log 中记录的 SCRIPT_FILENAME 值是否是你预期的物理路径
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











