--- mod_php5-5.1.3.cvs20060122/mod_php5.c.fix 2006-01-22 19:18:35 +0300 +++ mod_php5-5.1.3.cvs20060122/mod_php5.c 2006-01-22 19:17:32 +0300 @@ -21,16 +21,17 @@ #include "php_apache_http.h" #include "http_conf_globals.h" #ifdef NETWARE #define SIGPIPE SIGINT #endif +#include #if defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING) #include "ext/mbstring/mbstring.h" #endif /* defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING) */ #undef shutdown /* {{{ Prototypes */ @@ -76,16 +77,39 @@ static unsigned char apache_php_initiali typedef struct _php_per_dir_entry { char *key; char *value; uint key_length; uint value_length; int type; } php_per_dir_entry; +/* default php.ini path */ +static int php_ini_path_override(char **val) +{ + char *buf = NULL; + + if (getenv("PHPRC")) { + *val = buf; + return 0; + } + + if ((buf = (char *) malloc(MAXPATHLEN)) == NULL) { + errno = ENOMEM; + return -1; + } + + snprintf(buf, MAXPATHLEN, "/etc/php/%d.%d.%d/apache-mod_php", + PHP_MAJOR_VERSION, + PHP_MINOR_VERSION, + PHP_RELEASE_VERSION); + *val = buf; + return 0; +} + /* some systems are missing these from their header files */ /* {{{ php_save_umask */ static void php_save_umask(void) { saved_umask = umask(077); umask(saved_umask); @@ -764,16 +788,22 @@ static CONST_PREFIX char *php_apache_val php_per_dir_entry per_dir_entry; if (!apache_php_initialized) { apache_php_initialized = 1; #ifdef ZTS tsrm_startup(1, 1, 0, NULL); #endif sapi_startup(&apache_sapi_module); + if ( !apache_sapi_module.php_ini_path_override || !*apache_sapi_module.php_ini_path_override ) { + if ( php_ini_path_override(&apache_sapi_module.php_ini_path_override) == -1) { + perror("Can't override php.ini path"); + return NULL; + } + } php_apache_startup(&apache_sapi_module); } per_dir_entry.type = mode; if (strcasecmp(arg2, "none") == 0) { arg2 = ""; } @@ -907,16 +937,18 @@ static void php_init_handler(server_rec { register_cleanup(p, NULL, (void (*)(void *))apache_php_module_shutdown_wrapper, (void (*)(void *))php_module_shutdown_for_exec); if (!apache_php_initialized) { apache_php_initialized = 1; #ifdef ZTS tsrm_startup(1, 1, 0, NULL); #endif sapi_startup(&apache_sapi_module); + if (!apache_sapi_module.php_ini_path_override || !*apache_sapi_module.php_ini_path_override) + php_ini_path_override(&apache_sapi_module.php_ini_path_override); php_apache_startup(&apache_sapi_module); } #if MODULE_MAGIC_NUMBER >= 19980527 { TSRMLS_FETCH(); if (PG(expose_php)) { #if HARDENING_PATCH ap_add_version_component("PHP/" PHP_VERSION " with Hardening-Patch");