mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
* 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
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