Patch is below; the apache2filter SAPI needs the same fix. This "feature" of resetting the umask across requests is pretty dubious if used with a threaded MPM, however, since the umask is a process attribute not a thread attribute.
--- php-4.3.6/sapi/apache2handler/sapi_apache2.c.umask +++ php-4.3.6/sapi/apache2handler/sapi_apache2.c @@ -420,6 +420,19 @@ return APR_SUCCESS; } +static int saved_umask; + +static void php_save_umask(void) +{ + saved_umask = umask(0777); + umask(saved_umask); +} + +static void php_restore_umask(void) +{ + umask(saved_umask); +} + static void php_apache_request_ctor(request_rec *r, php_struct *ctx TSRMLS_DC) { char *content_type; @@ -552,6 +565,8 @@ } else { zend_file_handle zfd = {0}; + php_save_umask(); + zfd.type = ZEND_HANDLE_FILENAME; zfd.filename = (char *) r->filename; zfd.free_filename = 0; @@ -562,6 +577,9 @@ } else { zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &zfd); } + + php_restore_umask(); + #if MEMORY_LIMIT { char *mem_usage; -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php