![对于 PHP 文件后带有斜杠和内容的 URL,如何解决 IIS 上“未指定输入文件”错误?](https://linux22.com/image/744777/%E5%AF%B9%E4%BA%8E%20PHP%20%E6%96%87%E4%BB%B6%E5%90%8E%E5%B8%A6%E6%9C%89%E6%96%9C%E6%9D%A0%E5%92%8C%E5%86%85%E5%AE%B9%E7%9A%84%20URL%EF%BC%8C%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20IIS%20%E4%B8%8A%E2%80%9C%E6%9C%AA%E6%8C%87%E5%AE%9A%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我在 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 应用程序