Welcome! Log In Create A New Profile

Advanced

PHP as FastCGI on Windows: Simple how-to setup PHP as a service

February 20, 2013 08:59AM
The official guide on setting up PHP as FastCGI on Windows http://wiki.nginx.org/PHPFastCGIOnWindows makes use of batch files.

After extensive research and some new information, I've managed to make a fairly simple guide on setting up PHP as a service on Windows, with full start/stop/restart/status support.


The first thing that's needed is the WinSW binary from http://maven.jenkins-ci.org/content/repositories/releases/com/sun/winsw/winsw/
The "winsw-{VERSION}-bin.exe" needs to be saved to the folder containing php-cgi.exe, and needs to be renamed "winsw.exe"

In the same folder as php-cgi.exe and winsw.exe, create an xml file "winsw.xml" with the following content:

<service>
<id>PHP</id>
<name>PHP</name>
<description>PHP</description>
<executable>C:\PATH\TO\php\php-cgi.exe</executable>
<stopexecutable>C:\PATH\TO\php\php-stop.cmd</stopexecutable>
<env name="PHPRC" value="C:\PATH\TO\FOLDER\CONTAINING\PHPINI" />
<logpath>C:\PATH\FOR\WINSW\LOGFILES</logpath>
<logmode>roll</logmode>
<startargument>-bPORT</startargument>
<startargument>-cc:\PATH\TO\php.ini</startargument>
</service>

As an example, I keep PHP in C:\SERVER\php, the PHP ini file in C:\SERVER\config, and the logs in C:\SERVER\logs\php. PHP runs on port 9123.

<service>
<id>PHP</id>
<name>PHP</name>
<description>PHP</description>
<executable>C:\SERVER\php\php-cgi.exe</executable>
<stopexecutable>C:\SERVER\php\php-stop.cmd</stopexecutable>
<env name="PHPRC" value="c:\server\config" />
<logpath>C:\SERVER\logs\php</logpath>
<logmode>roll</logmode>
<startargument>-b9123</startargument>
<startargument>-cc:\server\config\php.ini</startargument>
</service>

In your PHP folder, alongside your php-cgi.exe, you need to make a file called "php-stop.cmd" with the following contents:

taskkill /f /IM php-cgi.exe



Once this has all been accomplished, open the command prompt, switch to the folder containing php-cgi.exe, and execute the following command:

winsw install


At this point, you can open the Services (win+run>services.msc) and start PHP, or type "net start PHP".
You can also type "winsw start", "winsw stop", "winsw status", and "winsw restart"




If having issues starting the service, verify it starts on its own by opening the command prompt to the folder containing php-cgi.exe and running:
php-cgi -b(PORT) -cc:\PATH\TO\php.ini

Also, make sure the log folders referenced in the xml file exist.
SubjectAuthorPosted

PHP as FastCGI on Windows: Simple how-to setup PHP as a service

BrentNewlandFebruary 20, 2013 08:59AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 60
Record Number of Users: 5 on December 17, 2014
Record Number of Guests: 154 on December 17, 2014
Powered by nginx    Powered by FreeBSD    PHP Powered    Powered by Percona     ipv6 ready