php-src/sapi/apache2filter
Aaron Bannert 3aa8a9b62b This patch implements a new Apache2 directive called PHPINIDir that
allows the specification of the php.ini directory from within the Apache
configuration. If left unset, the default is to defer to the hard-coded
php paths. When set, the supplied path is made relative to Apache's
internal ServerRoot setting.

Example:
PHPINIDir "conf"
# PHP will now look in the ServerRoot/conf directory for the php.ini file
2002-04-18 22:10:57 +00:00
..
apache_config.c This patch implements a new Apache2 directive called PHPINIDir that 2002-04-18 22:10:57 +00:00
config.m4 - Added checks to prevent building the DSO with wrong configure option. 2002-04-12 22:59:07 +00:00
CREDITS 2nd step towards auto-credits 2000-11-20 10:33:33 +00:00
php4apache2.dsp Fix output directory. 2002-04-06 15:37:08 +00:00
php_apache.h This patch implements a new Apache2 directive called PHPINIDir that 2002-04-18 22:10:57 +00:00
php_functions.c eekk -- and ssb thought my macro's were icky :) 2002-04-09 17:25:13 +00:00
php.sym An Apache 2.0 Filter for PHP, completely from scratch. 2000-10-26 17:55:05 +00:00
README Update README. 2002-04-11 17:01:51 +00:00
sapi_apache2.c This patch implements a new Apache2 directive called PHPINIDir that 2002-04-18 22:10:57 +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?

    It is experimental as interfaces in Apache 2.0 might change in the
    future.

HOW TO INSTALL

    Get the latest Apache 2.0 sources from CVS and install it. This
    SAPI module is known to work with Apache 2.0.35.

        $ 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.)

    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

    That's it. Now start bin/httpd.

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. Set the variable "ONE_PROCESS" to 1 and export it before
           starting Apache/a debugger.

    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)
    Protocol handlers
    Passing script data to engine without temporary file
    Syntax Highlighter (relies on files as well)