have in the future now obey to the variables_order directive, and there's a real way modular
way to handle POST content.
This is all untested, BEFORE_SAPI_POST_PATCH_17_FEB_2000 tagged before submission
@- Made multipart/form-data content obey to the variables_order directive (Zeev)
@ an ISAPI filter, only as an ISAPI extension, unless you wish to perform
@ authentication using PHP. This didn't yet get enough testing, but it
@ should work (Zeev)
- Fixed auth_user/auth_password memory leak (I didn't have time to test it under
Apache, feedback welcome!)
in shutdown function.
(php_array_walk) Print a warning if the walk function doesn't exist.
Split shutdown function call into a separate function that's called with
zend_hash_apply() instead of as destructor to keep hash consistent.
This fixes bug #3419.
@- Finished the server abstraction layer; All of the PHP code is now shared
@ across different servers (Apache, CGI, IIS, etc.), except for thin
@ interface modules (Zeev)
Remove mostly all references to APACHE and CGI_BINARY from the code.
- Apache include files are no longer included by any PHP code, except for the Apache SAPI module.
- No server specific code is in any of the base PHP code.
Still left to be done:
- Eliminate any references to APACHE from the few remaining modules.
- Move request_info.c's logic to SAPI
- Modify the regex function names, and globals, so that we can always
include them, without having to fear any interference with Apache;
Always use the bundled regex library
@ die. (Thies)
the problem was that we *did* register the signal in the apache
master process as well.
php_module_startup() -> REGISTER_INI_ENTRIES() -> OnChangeMaxExecutionTime() -> php_set_timeout().
from now on the .ini mechanism only sets PG(max_execution_time) and that gets
"converted" to a timeout-signal() in php_request_startup()!
we still need to think about the ZTS timeout mechanism.
@- If header information is sent after output has already been sent, the warning
@ message will now state the filename and line number at which the first output
@ was made (Zeev)
- Added $HTTP_ENV_VARS[] and $HTTP_SERVER_VARS[] support, which similarly
to $HTTP_GET_VARS[], contain environment and server variables. Setting
register_globals to Off will now also prevent registration of the
environment and server variables into the global scope (Zeev)
- Renamed gpc_globals to register_globals (Zeev)
- Introduced variables_order that deprecates gpc_order, and allows control
over the server and environment variables, in addition to GET/POST/Cookies
(Zeev)
using zend_hash_update() can make things worse in this situation.
- new function php_register_pre_request_shutdown(). this way modules
can register callbacks that will be called as soon as execution of
the script is done but *before* any cleanup (global symbol_table etc)
has taken place.
- Got rid of the old flush() implemenetation in favour of the new one
- Added implicit_flush() support to the output buffering layer.
@- Added implicit_flush() to control whether flush() should be called
@ implicitly after any output (Zeev)
- added support for externally built modules,
- improved support for in-tree shared modules,
- fixed diversion bugs,
- configure displays some informative messages,
- faster static build
(libtool isn't used anymore for compiling non-PIC objects),
- dependencies comparable to automake's without requiring GNU make or GCC,
- working make clean for non-GNU makes.
bitwise operators on them (no more error_reporting = 7, from now on you
can use error_reporting = E_ALL & ~E_NOTICE
@- Improved the php.ini reader to support constants and bitwise operators (Zeev)
If track_vars is on then decoded variables appear in $HTTP_STATE_VARS
array. If gpc_globals is on, then session vars are decoded into global
variables. If both are on, then globals and $HTTP_STATE_VARS contents
are references to each other.
The /decoder functions now just need to call php_set_session_var()
this behavior.
@ -Session vars are now decoded into $HTTP_STATE_VARS[] array and the
@ globals, depending on track_vars and gpc_globals settings (Andrei)
# Encoding source is currently only globals. We may want to change this
# in the future.
@ time out (Rasmus)
# Note that Apache clears all signal handler including SIGPROF before
# calling the content handler, so even though we set our itimer before
# this in the PHP_INI stuff, Apache kicks sand in our face and we need
# to set the timer again just before we start parsing
@Made mysql and gd work as shared extensions again (Stig)
- Fixed some warnings in maintainer-mode.
- Made mysql and gd work as shared extensions again by defining
COMPILE_DL if PIC is defined.
# We need a better solution for building .so extensions than this
# PIC/COMPILE_DL hack!
always properly set, it's a TODO for all of us). This enables us to implement
true 'use' support.
@- Added support for the 'use' keyword - behaves like 'require', but will not
@ use the same file more than once (Andi & Zeev, Zend library)
These cannot be implemented platform-independent, so we fall back to the native
non-reentrant versions, but lock during each access (only if ZTS is used).
To initialize/destroy the used data structures, you need to call
reentrancy_startup() before sapi_startup(), and reentrancy_shutdown() after
sapi_shutdown().
system, apache, or php's regex library by using the --with-regex option.
"php" is the default; if you use --with-apache in combination with
Apache 1.3.x, the default is "apache".
#
# Never saw a response to PHP-DEV post of 25-OCT
#
# Given the existence of knownDirectives, I figured that option 2
# was closest to the original design intent.
and php_regex.h figures out which regex header files to include and
defines symbols that prevents other stuff from including the wrong versions
of regex header files.
moved output-buffering related functions from basic_functions to output.c
Win32 project need to be updated to reflect new position.
# i'm not really happy with this solution, but it seemed the easiest one!
# the whole output code is a bit hard to understand...
@- Output-Buffering system is now Thread-Safe. (Thies)
but they are accessible thru "php_file_le_socket(), php_file_le_uploads()..."
i also updated the ftp, pdf and file-upload stuff to match the new requirements.
@- Cleaned up File-Module (Thies)
implementation now has its own directory under sapi/, just like
extensions have theirs under ext/. To make the final targets appear
in the main dir, the top-level Makefile includes sapi/NN/Makefile.inc
from the selected sapi backend. This is a plan Makefile stub without
any autoconf substitutions. Each SAPI backend also has its own
config.m4 like extensions (read at the end of diversion 2) and
config.h.stub files.
Each SAPI backend has to contain:
config.m4: just like for extensions, this file contains
autoconf/automake directives that end up in the configure script. The
only difference is that the sapi config.m4 files are read in diversion
(output block) 2 instead of 3. The sapi config.m4 files should set
two variables: PHP_SAPI (which sapi backend to choose) and SAPI_TARGET
(the name of the resulting library or program, previously BINNAME).
If they are not specified, they will default to "cgi" and "php",
respectively.
Makefile.inc: has to exist, has to define "INSTALL_IT" to the command
used to install the final target (or ":" for no operation). It also
has to define a plain Makefile rule (without autoconf substitutions)
to build $(SAPI_TARGET)
Makefile.am: just what you think. Make sure your target is called
"libphpsapi_NNN.a", where NNN is the value of PHP_SAPI.
Some testing and fixing probably remains. To make everything hang
together, I've done some ugly tricks that I can imagine causing some
problems. I've built and run the CGI version and built the Apache
DSO.