Save and restore umask across requests correctly. --- php-5.2.1/sapi/apache2handler/sapi_apache2.c 2007-01-01 12:36:12 +0300 +++ php-5.2.1/sapi/apache2handler/sapi_apache2.c.umask 2007-03-04 18:11:15 +0300 @@ -426,6 +426,19 @@ static apr_status_t php_server_context_c 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 int php_apache_request_ctor(request_rec *r, php_struct *ctx TSRMLS_DC) { char *content_length; @@ -614,6 +627,8 @@ zend_first_try { } else { zend_file_handle zfd; + php_save_umask(); + zfd.type = ZEND_HANDLE_FILENAME; zfd.filename = (char *) r->filename; zfd.free_filename = 0; @@ -625,6 +640,8 @@ zend_first_try { zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &zfd); } + php_restore_umask(); + apr_table_set(r->notes, "mod_php_memory_usage", apr_psprintf(ctx->r->pool, "%u", zend_memory_peak_usage(1 TSRMLS_CC))); }