1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 08:12:21 +01:00
Files
archived-php-src/sapi/apache2handler
Anatol Belski c6bad96f30 Merge remote-tracking branch 'origin/master' into native-tls
* origin/master: (398 commits)
  NEWS
  add test for bug #68381
  Fixed bug #68381 Set FPM log level earlier during init
  proper dllexport
  move to size_t where zend_string is used internally
  fix some datatype mismatches
  return after the warning, to fix uninitialized salt usage
  fix datatype mismatches
  add missing type specifier
  fix datatype mismatches
  fix unsigned check
  "extern" shouldn't be used for definitions
  joined identical conditional blocks
  simplify fpm tests
  SEND_VAR_NO_REF optimization
  Add test for bug #68442
  Add various tests for FPM - covering recent bugs (68420, 68421, 68423, 68428) - for UDS - for ping and status URI - for multi pool and multi mode
  Include small MIT FastCGI client library from https://github.com/adoy/PHP-FastCGI-Client
  Get rid of zend_free_op structure (use zval* instead). Get rid of useless TSRMLS arguments.
  Add new FPM test for IPv4/IPv6
  ...

Conflicts:
	win32/build/config.w32
2014-11-18 21:18:52 +01:00
..
2014-09-18 20:43:21 +02:00
2003-03-04 00:10:11 +00:00
2014-11-18 13:19:48 +01:00
2014-09-18 20:43:26 +02:00
2013-06-10 14:20:18 -07: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 recommend:

        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