php-src/sapi/apache2filter
Andi Gutmans 56f8195fe5 - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE()
used to return "" and not bool(false). It's not worth keeping it because
  STR_FREE() and zval_dtor() always have to check for it and it slows down
  the general case. In addition, it seems that empty_string has been abused
  quite a lot, and was used not only for setting zval's but generally in
  PHP code instead of "", which wasn't the intention. Last but not least,
  nuking empty_string should improve stability as I doubt every place
  correctly checked if they are not mistakenly erealloc()'ing it or
  calling efree() on it.
  NOTE: Some code is probably broken. Each extension maintainer should
  check and see that my changes are OK. Also, I haven't had time to touch
  PECL yet. Will try and do it tomorrow.
2004-07-19 07:19:50 +00:00
..
apache_config.c - A belated happy holidays and PHP 5 2004-01-08 08:18:22 +00:00
config.m4 Aligned configure help texts. 2003-10-03 05:24:33 +00:00
CREDITS Credits update. 2003-03-04 00:10:11 +00:00
EXPERIMENTAL These both are experimental still. (there has been a note in config.m4 2003-02-23 02:39:51 +00:00
php_apache.h - Happy new year and PHP 5 for rest of the files too.. 2004-01-08 17:33:29 +00:00
php_functions.c - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE() 2004-07-19 07:19:50 +00:00
php.sym update php module name to php5, not php4. 2003-03-29 04:52:46 +00:00
README Fix debugging description 2002-11-04 13:22:23 +00:00
sapi_apache2.c - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE() 2004-07-19 07:19:50 +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

    This SAPI module is known to work with Apache 2.0.40.

        $ 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

    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)
    Protocol handlers
    Passing script data to engine without temporary file