PHP Error on IIS 10: No input file specified

I’m running a site on a dev. machine with the following features:

  • Operating System: Windows 11 (21H2, 22000.739)
  • Internet Information Server (IIS): 10.0.22000.739
  • PHP: 8.0.21 (and some others), Non-thread-safe, x64

Whenever I try to access a PHP file, for instance via http://localhost/test-php/index.php, I get a response:

No input file specified.

The website is running, because a flat HTML file (http://localhost/test-php/index.html) can be viewed without problem.

No errors are recorded in the PHP log file.

—
The machine in which this happens had been working with PHP with no problems previously. As we do not use it very often for PHP development, I cannot really tell what was installed or upgraded between the moment where it was working and now. Most probably: a number of Windows Updates + installation of Visual Studio 2022.

—
We have tried all kind of tests, as suggested by various posts on stack overflow and some other places. These include:

  • Making sure there are no file permissions problems (setting all permissions to “everyone” for all folders and files involved).

  • PHP.ini: set to value/set to blank/comment out: doc_root

  • PHP.ini: set to value/set to blank/comment out: open_basedir

  • PHP.ini: set cgi.force_redirect = 0 and cgi.force_redirect = 1

  • PHP.ini: leave completely empry

  • PHP.ini: minimalistic: include only recommendations from PHP Manager (cgi.force_redirect = 0, cgi.fix_pathinfo = 1, fastcgi.impersonate = 1, etc.)

  • PHP.ini: copy one from a machine where IIS+PHP is working as expected

  • Install several versions of PHP (7.4, 8.0.21, 8.1.latest)

  • Install PHP by using different methods: download .ZIP and install “by hand”, use Microsoft Web Platform Installer, use PHP Tools for Visual Studio.

  • Set up PHP under IIS via PHP Manager (version 2.7)

  • Set up PHP under IIS manually (create handler mapping and FastCGI settings from IIS Manager)

  • Completely uninstall and reinstall IIS from the machine.

Current settings in web.config are:

<?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:PHP80php-cgi.exe" resourceType="Either" requireAccess="Script" />
        </handlers>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.php" />
                <add value="index.html" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

Current PHP.ini (minimalistic):

[PHP]
extension_dir = "C:PHP80ext"
log_errors = On
error_log = "C:WINDOWSTempphp-8.0.21_errors.log"
upload_tmp_dir = "C:WINDOWSTemp"
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1

[Session]
session.save_path = "C:WINDOWSTemp"

[Date]
date.timezone = "Europe/Paris"

Current C:WindowsSystem32inetsrvconfig

<fastCgi>
    <application fullPath="C:PHP80php-cgi.exe" monitorChangesTo="C:PHP80php.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>

What we’ve already checked (with no success)

Frustratingly enough, all the changes we’ve made up until now have had no success at all; nor a hint in how to solve the problem. The fact that the machine used to work seems to indicate that the problem might be related to either:

  • Installing something “incompatible” that broke ALL existing PHP installations and all existing PHP websites.
  • Updating something (maybe some component of Microsoft IIS itself) that broke hell loose.

Any help will be greatly appreciated