Re: com php-src: Implemented Feature #60524 (sys_temp_dir): main/main.c main/php_globals.h main/php_open_temporary_file.c php.ini-development
php.ini-production tests/basic/req60524.phpt
| From: | Pierre Joye | Date: | Tue, 29 Jan 2013 10:43:48 +0000 |
| Subject: | Re: com php-src: Implemented Feature #60524 (sys_temp_dir): main/main.c main/php_globals.h main/php_open_temporary_file.c php.ini-development php.ini-production tests/basic/req60524.phpt |
||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-71058@lists.php.net to get a copy of this message | ||
hi Stas!
php-5.5, build ts-windows-vc9-x86:
php_open_temporary_file.c, 201, error, C2065, 'tsrm_ls' : undeclared
identifier, main
On Tue, Jan 29, 2013 at 7:37 AM, Stanislav Malyshev <stas@php.net> wrote:
> Commit: 475a644bd84c071da04b4272b829a187a2c6d282
> Author: ALeX Kazik <git@kazik.de> Fri, 18 Jan 2013 17:13:39 +0100
> Committer: Stanislav Malyshev <stas@php.net> Mon, 28 Jan 2013 22:37:43 -0800
> Parents: a9d013bb020591cb6306afa2748da80f68b81f56
> Branches: PHP-5.5 master
>
> Link:
> http://git.php.net/?p=php-src.git;a=commitdiff;h=475a644bd84c071da04b4272b829a187a2c6d282
>
> Log:
> Implemented Feature #60524 (sys_temp_dir)
>
> Added a new configuration directive which allows it to change the
> temporary directory, the default behavior is unchanged.
>
> This is a useful option if you use all/some hosts inside of one .ini file
> with sections and want to change the temp dir per user (maybe it's not
> allowed to write outside the users home directory). Since the TMPDIR
> variable affects the whole php that way can not be used for this scenario.
>
> (see https://bugs.php.net/bug.php?id=60524)
>
> Bugs:
> https://bugs.php.net/60524
>
> Changed paths:
> M main/main.c
> M main/php_globals.h
> M main/php_open_temporary_file.c
> M php.ini-development
> M php.ini-production
> A tests/basic/req60524.phpt
>
>
> Diff:
> diff --git a/main/main.c b/main/main.c
> index f87a142..325ef7e 100644
> --- a/main/main.c
> +++ b/main/main.c
> @@ -521,6 +521,7 @@ PHP_INI_BEGIN()
> STD_PHP_INI_ENTRY("default_mimetype", SAPI_DEFAULT_MIMETYPE,
> PHP_INI_ALL, OnUpdateString, default_mimetype,
> sapi_globals_struct,sapi_globals)
> STD_PHP_INI_ENTRY("error_log", NULL,
> PHP_INI_ALL, OnUpdateErrorLog, error_log,
> php_core_globals, core_globals)
> STD_PHP_INI_ENTRY("extension_dir", PHP_EXTENSION_DIR,
> PHP_INI_SYSTEM, OnUpdateStringUnempty, extension_dir,
> php_core_globals, core_globals)
> + STD_PHP_INI_ENTRY("sys_temp_dir", NULL,
> PHP_INI_SYSTEM, OnUpdateStringUnempty, sys_temp_dir, php_core_globals,
> core_globals)
> STD_PHP_INI_ENTRY("include_path", PHP_INCLUDE_PATH,
> PHP_INI_ALL, OnUpdateStringUnempty, include_path,
> php_core_globals, core_globals)
> PHP_INI_ENTRY("max_execution_time", "30",
> PHP_INI_ALL, OnUpdateTimeout)
> STD_PHP_INI_ENTRY("open_basedir", NULL,
> PHP_INI_ALL, OnUpdateBaseDir, open_basedir,
> php_core_globals, core_globals)
> diff --git a/main/php_globals.h b/main/php_globals.h
> index 170431d..256765d 100644
> --- a/main/php_globals.h
> +++ b/main/php_globals.h
> @@ -85,6 +85,7 @@ struct _php_core_globals {
> char *open_basedir;
> char *extension_dir;
> char *php_binary;
> + char *sys_temp_dir;
>
> char *upload_tmp_dir;
> long upload_max_filesize;
> diff --git a/main/php_open_temporary_file.c b/main/php_open_temporary_file.c
> index b43d6a7..5d5e5b9 100644
> --- a/main/php_open_temporary_file.c
> +++ b/main/php_open_temporary_file.c
> @@ -196,6 +196,21 @@ PHPAPI const char* php_get_temporary_directory(void)
> return temporary_directory;
> }
>
> + /* Is there a temporary directory "sys_temp_dir" in .ini defined? */
> + {
> + char *sys_temp_dir = PG(sys_temp_dir);
> + if (sys_temp_dir) {
> + int len = strlen(sys_temp_dir);
> + if (len >= 2 && sys_temp_dir[len - 1] == DEFAULT_SLASH) {
> + temporary_directory = zend_strndup(sys_temp_dir, len - 1);
> + return temporary_directory;
> + } else if (len >= 1 && sys_temp_dir[len - 1] !=
> DEFAULT_SLASH) {
> + temporary_directory = zend_strndup(sys_temp_dir, len);
> + return temporary_directory;
> + }
> + }
> + }
> +
> #ifdef PHP_WIN32
> /* We can't count on the environment variables TEMP or TMP,
> * and so must make the Win32 API call to get the default
> diff --git a/php.ini-development b/php.ini-development
> index a97cd0f..93a4b7d 100644
> --- a/php.ini-development
> +++ b/php.ini-development
> @@ -729,6 +729,10 @@ user_dir =
> ; On windows:
> ; extension_dir = "ext"
>
> +; Directory where the temporary files should be placed.
> +; Defaults to the system default (see sys_get_temp_dir)
> +; sys_temp_dir = "/tmp"
> +
> ; Whether or not to enable the dl() function. The dl() function does NOT work
> ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
> ; disabled on them.
> diff --git a/php.ini-production b/php.ini-production
> index dce8fc9..7d84c9b 100644
> --- a/php.ini-production
> +++ b/php.ini-production
> @@ -729,6 +729,10 @@ user_dir =
> ; On windows:
> ; extension_dir = "ext"
>
> +; Directory where the temporary files should be placed.
> +; Defaults to the system default (see sys_get_temp_dir)
> +; sys_temp_dir = "/tmp"
> +
> ; Whether or not to enable the dl() function. The dl() function does NOT work
> ; properly in multithreaded servers, such as IIS or Zeus, and is automatically
> ; disabled on them.
> diff --git a/tests/basic/req60524.phpt b/tests/basic/req60524.phpt
> new file mode 100644
> index 0000000..6803e1f
> --- /dev/null
> +++ b/tests/basic/req60524.phpt
> @@ -0,0 +1,8 @@
> +--TEST--
> +Req #60524 (Specify temporary directory)
> +--INI--
> +sys_temp_dir=/path/to/temp/dir
> +--FILE--
> +<?php echo sys_get_temp_dir(); ?>
> +--EXPECT--
> +/path/to/temp/dir
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
--
Pierre
@pierrejoye | http://blog.thepimp.net | http://www.libgd.org