PHP-FastCGI on Windows


NGINX can interface with PHP on Windows via a FastCGI daemon, which ships with PHP: php-cgi.exe. You need to run php-cgi.exe -b<port> and use fastcgi_pass<port>; in the NGINX configuration file. After being launched, php-cgi.exe will keep listening for connections in a command prompt window. To hide that window, use the tiny utility RunHiddenConsole


  1. Install NGINX for Win32.
  2. Install the Windows binaries of PHP, making sure that php-cgi.exe is installed in the same directory as php.exe.
  3. Create somewhere (e.g. in c:\nginx\) a batch file start-php-fcgi.bat similar to this one:


ECHO Starting PHP FastCGI...
c:\bin\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b


root c:/www;

location ~ \.php$ {
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;

Autostarting PHP and NGINX

  1. Schedule a basic (on Windows Vista) task to run the batch file above at system start up under the SYSTEM account.
  2. If using Windows NGINX from, schedule a basic (on Windows Vista) task to run C:\nginx\conf\start-nginx.bat file at system start up under the SYSTEM account in starting directory C:\nginx.
  3. A home made Cygwin build of NGINX can be scheduled using a batch file similar to this:
cd /d C:\cygwin\bin && bash -c /usr/local/nginx/sbin/nginx