In Windows there are always multiple ways to install stuff like CGI
I will follow the installation steps of the PHP Non Thread Safe version on a Windows Server 2019 Standard Evaluation (Desktop Experience) operating system what needs IIS and CGI to be installed. Install first the IIS (Internet Information Services) by opening Server Manager where we have Manage, Tools, View and Help menus. At Manage we click on Add Roles and Features and for IIS installation on Server Roles select Web Server (IIS), then Add Features and Next after selecting. At Role Services, expand Application Development and select CGI (Common Gateway Interface). We still have a final Next and then Install.
Php is built with C++ and needs the visual studio runtime installed.
Now Download and install Microsoft Visual C++ Redistributable Package by going to the latest supported Visual C++ downloads and download the latest version of the Microsoft Visual C++ 2015-2019 Redistributable (x64) – 14.22.278.21 (x64: vc_redist.x64.exe) and install it;
Download the latest php non thread safe 64 from https://windows.php.net/download/ , extract it to a dir like c:\php8
In server manager choose
web Server (IIS)
I had installed the web server first without Adding CGI feature, thaen I couldn’t find the option to add the feature to IIS. After a day off my brains worked better, You need to press the little arrow in the add server roles for Web Server IIS, then Web Server, then application Development, under there , is CGI
Now finally, I I have the CGI option and FastCGI in the Add Handler mappings in the IIS Manager.
TO add php as fastcgi add a new handler and fill it out.
Request path: *.php
Name: PHP with FastCGI
Now edit the fast cgi settings from the service manager, they miraculously should have appeared.
Click on the fastci php-cgi.exe that you previously added, now add
The Edit FastCGI Application was opened and at FastCGI Properties under General\Environment Variables (Collection) click on the three dots … next to the work “Collection”
Now Add these values as follows:
Under Members click Add and for the Name Properties we change Name: PHP_MAX_REQUESTS and VALUE: 5000 then click OK to save the changes;
OK to exit from Edit FastCGI Application and come back to the FastCGI Settings and we can close Internet Information Services (ISS) Manager;
Now open a Powershell Window as Admin
To restart IIS open the Comand Prompt or PowerShell and type iisreset
Now go into the php dir and check if php is working on your server as a language. Run the following:
PS C:\php8> .\php.exe -info
You should see a ton of settings instead of an error.
You should also verify that PHP works with IIS. Create the following file, but delete when your finished as giving server information can invite attackers, if they see that your old version of php is vulnerable.
create a file called info.php and insert into it the following
the C:\inetpub\wwwroot directory and create info.php
Just this line of code in the file:
<?php phpinfo(); ?>
after you save it open http://localhost/info.php
The next project will be to do this totally in a script from ansible.