Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

This is an old revision of the document!


Use PHP with the Synchronet Web Server

Dynamic PHP content may be served by the Synchronet Web Server using PHP-CGI or, for 3.17a builds newer than November 1st, 20015, using PHP-FPM. PHP-CGI is slower and less efficient than PHP-FPM, so PHP-FPM is recommended when available.

PHP applications will not magically have access to your Synchronet content (e.g. users, messages, files).

Install PHP

Make sure you get PHP-CGI or PHP-FPM support as needed. On *nix platforms, this is achieved for PHP-CGI by excluding the –with-apxs2 option from the configure command-line during the installation process.

Install PHP Content

Install your PHP application(s) into your [Web] Root directory, as specified in your sbbs.ini file.

:!: Note: many PHP web applications require 3rd party database support (e.g. MySQL), which may need to be installed as well.

Configure Web Server For PHP-CGI

Edit your ctrl/sbbs.ini file, ensuring:

  1. The Web Server is enabled (AutoStart=true)
  2. If your application has an index.php file, that that file is included in the IndexFileNames value (comma separated list)
  3. The MaxCgiInactivity value is set to something sane (default: 120 seconds)
  4. The CGIExtensions key value includes .php (comma separated list)
  5. The Options key value does not include the NO_CGI option (bit 5)

Example:

[Web]
AutoStart=true
IndexFileNames=index.html,index.ssjs,index.php
MaxCgiInactivity=120
CGIExtensions=.cgi,.pl,.php
Options=NO_HOST_LOOKUP

Edit your ctrl/web_handler.ini file.

If you're using Synchronet for Windows v3.15 (Web Server Revision 1.525 or later), edit the [CGI.Win32] section, otherwise, edit the [CGI] section:

Ensure the php key value points to the correct path (location) of your php-cgi (or php-cgi.exe) file.

Example (*nix):

[CGI]
php = /usr/local/bin/php-cgi

Example (Windows):

[CGI.Win32]
php = /php/php-cgi.exe

Edit your ctrl/cgi_env.ini file, ensuring it contains the following lines:

[REDIRECT_STATUS]
value=200

:!: If you see the PHP error This PHP CGI binary was compiled with force-redirect enabled., that indicates that your ctrl/cgi_env.ini file is missing this key.

Configure Web Server For PHP-FPM

Edit your ctrl/sbbs.ini file, ensuring:

  1. The Web Server is enabled (AutoStart=true)
  2. If your application has an index.php file, that that file is included in the IndexFileNames value (comma separated list)
  3. The MaxCgiInactivity value is set to something sane (default: 120 seconds)
  4. The Options key value does not include the NO_CGI option (bit 5)

Example:

[Web]
AutoStart=true
IndexFileNames=index.html,index.ssjs,index.php
MaxCgiInactivity=120
Options=NO_HOST_LOOKUP

Edit the webctrl.ini file at the root of your PHP application and configure it to use FastCGI.

Example (using a TCP socket):

[*.php]
FastCGISocket=127.0.0.1:9000

Example (using a UNIX Domain socket):

[*.php]
FastCGISocket=/run/php/php-fpm.sock

Make sure that php-fpm is running and that the listener socket is the same as in the FastCGISocket line.

:!: If you see the PHP error This PHP CGI binary was compiled with force-redirect enabled., that indicates that your ctrl/cgi_env.ini file is missing this key.

See Also