如何使用PHP和NGINX解决“NO INPUT FILE SPECIFIED”

本文探讨了Nginx与PHP集成时常见的配置错误,包括错误的SCRIPT_FILENAME路径设置和文件权限问题,提供了解决方案,确保PHP脚本正确执行。

发送给PHP的错误路径
Nginx告诉PHP有关要通过SCRIPT_FILENAME fastcgi_param值执行的文件。wiki中的大多数示例都应将其定义为$ document_root $ fastcgi_script_name。可怕的教程通常会对路径值进行硬编码,但这是不可取的,因为我们不想复制信息并邀请将来搞砸。所以你已经使用了$ document_root $ fastcgi_script_name选项,突然间它不再有效了。

这是因为nginx有3级继承,通常称为块,这些是http,服务器和位置,每个都是父级的子块。nginx中的指令继承向下但从不向上或跨越,因此如果您在一个位置块中定义某些内容,则在任何情况下都不会在任何其他位置块中应用它。

通常,用户在location /中定义他们的索引和根指令,因为教程告诉他们。因此,当他们使用$ document_root定义SCRIPT_FILENAME时,实际上没有定义root指令,因此SCRIPT_FILENAME值只会成为使PHP查看根服务器目录的URI。

这里的简单解决方案是在服务器块中定义指令。(或甚至http块!)通常,您可以定义一个指令越高,您需要的重复指令就越少。

文件权限不正确

当我告诉他们他们的文件权限不正确时,大多数人都不相信我。他们正在查看该死的权限,PHP用户可以正常读取该文件!遗憾的是,这表明对Unix用户权限缺乏了解。由于能够读取文件是不够的,用户还必须能够遍历该文件。

这实际上意味着文件不仅应具有读取权限,而且整个目录结构应具有执行权限,以便PHP用户可以遍历该路径。一个例子:

假设您在/ var / www中有一个index.php文件。/var/www/index.php必须具有读权限,并且/ var和/ var / www都必须具有执行权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值