Project

General

Profile

TutorialLighttpdAndPHP » History » Revision 7

Revision 6 (jan, 2005-11-12 17:53) → Revision 7/91 (Anonymous, 2005-11-23 15:57)

= Lighttpd and PHP = 

 `Startingpoint` Lighttpd is already [wiki:TutorialInstallation installed and working] 

 == PHP and FastCGI == 

 First of all you need a PHP which is providing FastCGI support. Depending on your  
 distribution you might already have it: 

 === ArchLinux === 

 Read http://wiki.archlinux.org/index.php/Fastcgi_and_lighttpd  

 === FreeBSD === 

 {{{ 
 $ cd /usr/ports/www/php-cgi 
 $ make install clean 
 }}} 

 === Gentoo === 

 Add the USE flag 'fastcgi' to compile php with fastcgi support. 

 {{{ 
 $ emerge php-cgi 
 }}} 

 === Debian === 

 Debian provides (at least in Sarge) a fastcgi enabled version - though it's called php4-cgi. 

 {{{ 
 $ apt-get install php4-cgi 
 }}} 


 === Others === 

 Download a source tar-ball from http://www.php.net/ and configure it with at least this settings: 

 {{{ 
 $ ./configure \ 
    --enable-fastcgi \ 
    --enable-discard-path \ 
    --enable-force-redirect 
 }}} 

 If you want to have the same PHP as you are using in a mod_php configuration somewhere else call 

 {{{ 
 <?php phpinfo(); ?> 
 }}} 

 * copy the configure options from the output of the script 
 * remove the ``--with-apxs`` and ``--with-apxs2`` options 
 * add the three options from above. 

 Build PHP now by callings ``make`` and ``make install`` and see if you can find a php binary which is responding: 

 {{{ 
 $ php -v 
 PHP 5.0.3 (cgi-fcgi) (built: Dec 21 2004 12:59:18) 
 Copyright (c) 1997-2004 The PHP Group 
 Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies 
     with eAccelerator v0.9.3, Copyright (c) 2004-2005 eAccelerator, by eAccelerator 
 }}} 

 or something like this. The ``(cgi-fcgi)`` is the important part. The binary might also called ``php-cgi`` or if 
 you still can't find it follow this hint:  

 {{{ 
 $ ls sapi/cgi/php 
 }}} 

 == Configuration == 

 Add ``cgi.fix_pathinfo = 1`` to you ``php.ini`` and add this basic section to you ``lighttpd.conf``: 

 {{{ 
 fastcgi.server = ( ".php" => ((  
                      "bin-path" => "/path/to/php-cgi", 
                      "socket" => "/tmp/php.socket", 
                  ))) 
 }}} 

 A little bit more advance is this setting which tries the tune some more options. If you need PATH_INFO the broken-scriptfilename is  
 for you. 

 {{{ 
 fastcgi.server = ( ".php" => ((  
                      "bin-path" => "/path/to/php-cgi", 
                      "socket" => "/tmp/php.socket", 
                      "max-procs" => 2, 
                      "bin-environment" => (  
                        "PHP_FCGI_CHILDREN" => "16", 
                        "PHP_FCGI_MAX_REQUESTS" => "10000" 
                      ), 
                      "bin-copy-environment" => ( 
                        "PATH", "SHELL", "USER" 
                      ), 
                      "broken-scriptfilename" => "enable" 
                  ))) 
 }}} 



 Please read the configuration section for more background  

  * http://www.lighttpd.net/documentation/configuration.html 
  * http://www.lighttpd.net/documentation/fastcgi.html 

 and use  

 http://trac.lighttpd.net/trac/file/branches/lighttpd-1.3.x/doc/lighttpd.conf 

 as starting point for the configuration.