php-src/sapi/apache2handler
Rasmus Lerdorf b911467d1d MFB
Here are the signal changes from the 5.3 branch that optimizes signal
handler registration and switches from longjmp to siglongjmp in order
to make signal mask handling consistent across different UNIX operating
systems.
2008-03-19 16:37:49 +00:00
..
apache_config.c Bump copyright year, 2 of 2. 2007-12-31 07:12:20 +00:00
config.m4 Adding itk again to non-threaded MPMs. Sorry for the confusion 2008-03-11 22:50:41 +00:00
config.w32 MFB: Update Apache 2 libs to 2.0.59 on the build box and standardize the dirs 2007-05-04 18:19:37 +00:00
CREDITS Credits update. 2003-03-04 00:10:11 +00:00
mod_php.c Bump copyright year, 2 of 2. 2007-12-31 07:12:20 +00:00
php5apache2.dsp change "php5" to "php6" everywhere 2007-02-07 09:35:09 +00:00
php_apache.h Imporoved PHP binary size and startup speed with GCC4 visibility control (Nuno) 2008-01-30 09:56:22 +00:00
php_functions.c New way for check void parameters 2008-03-04 23:39:15 +00:00
php.sym change "php5" to "php6" everywhere 2007-02-07 09:35:09 +00:00
README initial checkin of the apache2 SAPI using a handler instead of filters. 2003-02-11 17:40:11 +00:00
sapi_apache2.c MFB 2008-03-19 16:37:49 +00:00

WHAT IS THIS?

    This module exploits the layered I/O support in Apache 2.0.

HOW DOES IT WORK?
    
    In Apache 2.0, you have handlers which generate content (like
    reading a script from disk). The content goes then through
    a chain of filters. PHP can be such a filter, so that it processes
    your script and hands the output to the next filter (which will
    usually cause a write to the network).

DOES IT WORK?

    Currently the issues with the module are:  
        * Thread safety of external PHP modules
        * The lack of re-entrancy of PHP. due to this I have disabled the 'virtual' 
          function, and tried to stop any method where a php script can run another php 
          script while it is being run.


HOW TO INSTALL

    This SAPI module is known to work with Apache 2.0.44.

        $ cd apache-2.x
        $ cd src
        $ ./configure --enable-so
        $ make install

    For testing purposes, you might want to use --with-mpm=prefork.
    (Albeit PHP also works with threaded MPMs. See Thread Safety note above)

    Configure PHP 4:

        $ cd php-4.x
        $ ./configure --with-apxs2=/path/to/apache-2.0/bin/apxs
        $ make install
   
    At the end of conf/httpd.conf, add:

        AddType application/x-httpd-php .php

    If you would like to enable source code highlighting functionality add:
    
        AddType application/x-httpd-php-source .phps
    
    That's it. Now start bin/httpd.

HOW TO CONFIGURE

    The Apache 2.0 PHP module supports a new configuration directive that
    allows an admin to override the php.ini search path. For example,
    place your php.ini file in Apache's ServerRoot/conf directory and
    add this to your httpd.conf file:

        PHPINIDir "conf"

DEBUGGING APACHE AND PHP
    
    To debug Apache, we recommened:

        1. Use the Prefork MPM (Apache 1.3-like process model) by
           configuring Apache with '--with-mpm=prefork'.
        2. Start httpd using -DONE_PROCESS (e.g. (gdb) r -DONE_PROCESS).

    If you want to debug a part of the PHP startup procedure, set a 
    breakpoint on 'load_module'. Step through it until apr_dso_load() is 
    done. Then you can set a breakpoint on any PHP-related symbol.

TODO

    PHP functions like apache_sub_req (see php_functions.c)
    Source Code Highlighting
    Protocol handlers