对于 PHP 文件后带有斜杠和内容的 URL,如何解决 IIS 上“未指定输入文件”错误?

对于 PHP 文件后带有斜杠和内容的 URL,如何解决 IIS 上“未指定输入文件”错误?

我在 IIS 上运行 PHP 7.3 应用程序,使用 FastCGI 处理程序来执行文件。在浏览器中请求以 *.php 结尾的 URL 时,一切正常。

但是,应用程序的某些路径如下所示:http://my-site.com/image.php/my_image_name.png,即 PHP 文件的文件名后面还有一些内容,这不是查询字符串。对于这些 URL,IIS 始终以 HTTP 404 和消息“未指定输入文件”进行响应。

我该如何修复这个问题?

答案1

为了解析这样的 URL,PHP 脚本使用 PHP 提供的路径信息。使用 FastCGI 处理程序似乎会弄乱此路径信息。幸运的是,PHP 有一个配置选项可以修复这些路径:

导航到您的php.ini文件并设置以下选项:

cgi.fix_pathinfo=1

这是在 IIS 上托管 PHP 应用程序时 Microsoft 推荐的设置:使用 FastCGI 在 IIS 7 上托管 PHP 应用程序

相关内容