From: Wez Furlong Date: Mon, 29 Mar 2004 21:28:47 +0000 (+0000) Subject: Fix for Bug #26757: session.save_path default is bogus for win32 X-Git-Tag: php-4.3.6RC1~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ffe1113b3d12545976eb29b6d91246d0c0f8bbe9;p=php Fix for Bug #26757: session.save_path default is bogus for win32 Based on a patch found in the bug report. Concept approved by Ilia. --- diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index 8d9a0f9f12..8dcfca7976 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -46,6 +46,7 @@ #include "php_session.h" #include "mod_files.h" #include "ext/standard/flock_compat.h" +#include "php_open_temporary_file.h" #define FILE_PREFIX "sess_" @@ -234,6 +235,10 @@ PS_OPEN_FUNC(files) data = ecalloc(sizeof(*data), 1); PS_SET_MOD_DATA(data); + if (*save_path == '\0') { + save_path = php_get_temporary_directory(); + } + data->fd = -1; if ((p = strchr(save_path, ';'))) { errno = 0; diff --git a/ext/session/session.c b/ext/session/session.c index 2356290c9a..01b6e79730 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -120,7 +120,11 @@ static PHP_INI_MH(OnUpdateSerializer) PHP_INI_BEGIN() STD_PHP_INI_BOOLEAN("session.bug_compat_42", "1", PHP_INI_ALL, OnUpdateBool, bug_compat, php_ps_globals, ps_globals) STD_PHP_INI_BOOLEAN("session.bug_compat_warn", "1", PHP_INI_ALL, OnUpdateBool, bug_compat_warn, php_ps_globals, ps_globals) +#ifdef PHP_WIN32 + STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateString, save_path, php_ps_globals, ps_globals) +#else STD_PHP_INI_ENTRY("session.save_path", "/tmp", PHP_INI_ALL, OnUpdateString, save_path, php_ps_globals, ps_globals) +#endif STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateString, session_name, php_ps_globals, ps_globals) PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler) STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_ALL, OnUpdateBool, auto_start, php_ps_globals, ps_globals) diff --git a/main/php_open_temporary_file.c b/main/php_open_temporary_file.c index b364eb6a6a..d1210d8230 100644 --- a/main/php_open_temporary_file.c +++ b/main/php_open_temporary_file.c @@ -166,7 +166,7 @@ static int php_do_open_temporary_file(const char *path, const char *pfx, char ** /* * Determine where to place temporary files. */ -const char* get_temporary_directory() +PHPAPI const char* php_get_temporary_directory(void) { /* Cache the chosen temporary directory. */ static char* temporary_directory; @@ -233,7 +233,7 @@ PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, char **opened fd = php_do_open_temporary_file(dir, pfx, opened_path_p TSRMLS_CC); if (fd == -1) { /* Use default temporary directory. */ - fd = php_do_open_temporary_file(get_temporary_directory(), pfx, opened_path_p TSRMLS_CC); + fd = php_do_open_temporary_file(php_get_temporary_directory(), pfx, opened_path_p TSRMLS_CC); } return fd; } diff --git a/main/php_open_temporary_file.h b/main/php_open_temporary_file.h index dc46d22bdd..70dc7a18cb 100644 --- a/main/php_open_temporary_file.h +++ b/main/php_open_temporary_file.h @@ -21,5 +21,6 @@ PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p TSRMLS_DC); PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, char **opened_path_p TSRMLS_DC); +PHPAPI const char* php_get_temporary_directory(void); #endif /* PHP_OPEN_TEMPORARY_FILE_H */ diff --git a/php.ini-dist b/php.ini-dist index 132b7920ec..bdd57b0102 100644 --- a/php.ini-dist +++ b/php.ini-dist @@ -819,7 +819,7 @@ session.save_handler = files ; You can use the script in the ext/session dir for that purpose. ; NOTE 2: See the section on garbage collection below if you choose to ; use subdirectories for session storage -session.save_path = /tmp +;session.save_path = /tmp ; Whether to use cookies. session.use_cookies = 1 diff --git a/php.ini-recommended b/php.ini-recommended index 8d2345b1f0..a5bb15f0ac 100644 --- a/php.ini-recommended +++ b/php.ini-recommended @@ -825,7 +825,7 @@ session.save_handler = files ; Argument passed to save_handler. In the case of files, this is the path ; where data files are stored. Note: Windows users have to change this ; variable in order to use PHP's session functions. -session.save_path = /tmp +;session.save_path = /tmp ; Whether to use cookies. session.use_cookies = 1