我正在一台开发机器上运行一个站点,它具有以下功能:
***操作系统:**Windows 11(2002年上半年,22000.739)
*互联网信息服务器(IIS):10.0.22000.739
*PHP:8.0.21(和其他一些版本),非线程安全,x64
每当我尝试访问PHP文件时(例如通过http://localhost/test-php/index.php),我都会得到一个响应:
未指定输入文件。
网站正在运行,因为可以查看平面HTML文件(http://localhost/test-php/index.html)而不会出现问题。
PHP日志文件中不会记录任何错误。
发生这种情况的机器以前一直在使用PHP,没有任何问题。由于我们不经常使用它来进行PHP开发,我不能确切地告诉从它工作的那一刻到现在安装或升级了什么。最有可能的是:大量Windows更新+Visual Studio 2022安装。
我们已经尝试了各种测试,如堆栈溢出和一些其他地方的各种帖子所建议的。这些包括:
- 确保没有文件权限问题(将所有相关文件夹和文件的所有权限设置为“everyone”)。
- PHP.ini:设置为值/设置为空白/注解掉:文件根目录
- PHP.ini:设置为值/设置为空白/注解掉:打开基目录
- 设置cgi.强制重定向= 0和cgi.强制重定向= 1
- PHP.ini:完全空着
- PHP.ini:极简主义:仅包括来自PHP管理器建议(cgi.force_redirect = 0、cgi.fix_pathinfo= 1、fastcgi.impersonate= 1等)
- 从IIS+PHP正常运行的机器上复制一个
- 在不同的目录下安装多个版本的PHP(7.4、8.0.21、8.1.latest),并使用不同的php.ini设置。
- 使用不同的方法安装PHP:下载.ZIP并“手动”安装,使用Microsoft Web平台安装程序,使用Visual Studio的PHP工具。
- 通过PHP管理器(版本2.7)在IIS下设置PHP
- 在IIS下手动设置PHP(从IIS管理器创建处理程序Map和FastCGI设置)
- 检查处理程序Map以确保 *.PHPMap仅在请求Map到以下对象时才检查[x] Invoke处理程序:文件或文件夹
- 从计算机上完全卸载并重新安装IIS。
web.config中的当前设置为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="php-8.0.21" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\PHP80\php-cgi.exe" resourceType="Either" requireAccess="Script" />
</handlers>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
当前PHP.ini(简约):
[PHP]
extension_dir = "C:/PHP80/ext/"
log_errors = On
error_log = "C:/WINDOWS/Temp/php-8.0.21_errors.log"
upload_tmp_dir = "C:/WINDOWS/Temp/"
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
[Session]
session.save_path = "C:/WINDOWS/Temp/"
[Date]
date.timezone = "Europe/Paris"
当前C:\Windows\System32\inetsrv\config相关的fastCgi设置:
<fastCgi>
<application fullPath="C:\PHP80\php-cgi.exe" monitorChangesTo="C:\PHP80\php.ini" activityTimeout="300" requestTimeout="300" instanceMaxRequests="10000">
<environmentVariables>
<environmentVariable name="PHPRC" value="C:\PHP80\" />
<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
</environmentVariables>
</application>
</fastCgi>
我们已经检查过的项目(没有成功)
- "No input file specified" for some versions of PHP
- No input file specified PHP error under IIS
- PHP pages on IIS say No input file specified
- IIS | PHP Error: No input file specified
- No input file specified PHP fastcgi
- https://serverfault.com/questions/990968/how-can-i-solve-no-input-file-specified-error-on-iis-for-urls-with-a-slash-and
- https://www.saotn.org/php-iis-no-input-file-specified/
- http://www.edugeek.net/forums/windows-server-2016/188383-iis-10-php-7-no-input-file-specified.html
令人沮丧的是,到目前为止,我们所做的所有改变都没有取得任何成功;也没有关于如何解决这个问题的提示。这台机器曾经工作过的事实似乎表明这个问题可能与以下两种情况之一有关:
- 安装一些“不兼容”的东西,破坏了所有现有的PHP安装和所有现有的PHP网站。
- 更新一些东西(可能是微软IIS本身的一些组件),打破了地狱松散。
任何帮助都将不胜感激
1条答案
按热度按时间58wvjzkj1#
尝试修复此问题时没有任何效果。将所有文件移到另一个目录并运行Web应用程序。然后将其复制到相同位置并再次运行。它工作了一段时间后出现故障。实际上,它看起来像一个错误。