Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
howto:php [2010/03/16 22:16] digitalmanhowto:php [2015/11/02 11:24] – Initial documentation for PHP-FPM deuce
Line 1: Line 1:
 ====== Use PHP with the Synchronet Web Server ====== ====== Use PHP with the Synchronet Web Server ======
-Dynamic [[http://php.net/|PHP]] content may be served by the Synchronet Web Server using //PHP-CGI//.+Dynamic [[http://php.net/|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).+PHP applications //will not// magically have access to your Synchronet content (e.g. users, messages, files).
  
 ===== Install PHP ===== ===== Install PHP =====
  
-Make sure you get PHP-CGI support. On *nix platforms, this is achieved by excluding the ''--with-apxs2'' option from the ''configure'' command-line during the installation process.+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 PHP Content =====
Line 14: Line 14:
 :!: Note: many PHP web applications require 3rd party database support (e.g. MySQL), which may need to be installed as well. :!: Note: many PHP web applications require 3rd party database support (e.g. MySQL), which may need to be installed as well.
  
-===== Configure Web Server ===== +===== Configure Web Server For PHP-CGI =====
- +
-Edit your ''[[dir:ctrl]]/[[config:sbbs.ini]]'' file, making sure that the ''CGIExtensions'' key value includes ''.php''.+
  
 +Edit your ''[[dir:ctrl]]/[[config:sbbs.ini]]'' file, ensuring:
 +  - The Web Server is enabled (''AutoStart=true'')
 +  - If your application has an ''index.php'' file, that that file is included in the ''IndexFileNames'' value (comma separated list)
 +  - The ''MaxCgiInactivity'' value is set to something sane (default: 120 seconds)
 +  - The ''CGIExtensions'' key value includes ''.php'' (comma separated list)
 +  - The ''Options'' key value **does not** include the ''NO_CGI'' option (bit 5)
 +   
 Example: Example:
 <file> <file>
 +[Web]
 +AutoStart=true
 +IndexFileNames=index.html,index.ssjs,index.php
 +MaxCgiInactivity=120
 CGIExtensions=.cgi,.pl,.php CGIExtensions=.cgi,.pl,.php
 +Options=NO_HOST_LOOKUP
 </file> </file>
  
 Edit your ''[[dir:ctrl]]/[[config:web_handler.ini]]'' file. Edit your ''[[dir:ctrl]]/[[config:web_handler.ini]]'' file.
  
-If you're running Synchronet for Windows, edit the ''[CGI.Win32]'' section, otherwise (e.g. *nix, or MacOSX), edit the ''[CGI]'' section:+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:
  
-Make sure the ''php'' key value points to the correct location of your ''php-cgi'' (or ''PHP-CGI.EXE'') file. +Ensure the ''php'' key value points to the correct path (locationof your ''php-cgi'' (or ''php-cgi.exe'') file. 
  
 Example (*nix): Example (*nix):
Line 43: Line 53:
 </file> </file>
  
-Edit your ''[[dir:ctrl]]/[[config:cgi_env.ini]]'' file, making sure it contains the following lines:+Edit your ''[[dir:ctrl]]/[[config:cgi_env.ini]]'' file, ensuring it contains the following lines:
 <file> <file>
 [REDIRECT_STATUS] [REDIRECT_STATUS]
 value=200 value=200
 </file> </file>
 +
 +:!: If you see the PHP error ''This PHP CGI binary was compiled with force-redirect enabled.'', that indicates that your ''[[dir:ctrl]]/[[config:cgi_env.ini]]'' file is missing this key.
 +
 +===== Configure Web Server For PHP-FPM =====
 +
 +Edit your ''[[dir:ctrl]]/[[config:sbbs.ini]]'' file, ensuring:
 +  - The Web Server is enabled (''AutoStart=true'')
 +  - If your application has an ''index.php'' file, that that file is included in the ''IndexFileNames'' value (comma separated list)
 +  - The ''MaxCgiInactivity'' value is set to something sane (default: 120 seconds)
 +  - The ''Options'' key value **does not** include the ''NO_CGI'' option (bit 5)
 +   
 +Example:
 +<file>
 +[Web]
 +AutoStart=true
 +IndexFileNames=index.html,index.ssjs,index.php
 +MaxCgiInactivity=120
 +Options=NO_HOST_LOOKUP
 +</file>
 +
 +Edit the [[server:web#webctrl.ini per-directory configuration file|webctrl.ini file]] at the root of your PHP application and configure it to use FastCGI.
 +
 +Example:
 +<file>
 +[*.php]
 +FastCGISocket=127.0.0.1:9000
 +</file>
 +
 +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 ''[[dir:ctrl]]/[[config:cgi_env.ini]]'' file is missing this key.
  
 ===== See Also ===== ===== See Also =====
howto/php.txt · Last modified: 2023/02/05 19:33 by digital man
Back to top
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0