sys_get_temp_dir
(PHP 5 >= 5.2.1, PHP 7, PHP 8)
sys_get_temp_dir — 返回用于临时文件的目录
参数
此函数没有参数。
返回值
返回临时目录的路径。
示例
示例 #1 sys_get_temp_dir() 示例
<?php
// 使用 sys_get_temp_dir() 在目录里创建临时文件
$temp_file = tempnam(sys_get_temp_dir(), 'Tux');
echo $temp_file;
?>
以上示例的输出类似于:
C:\Windows\Temp\TuxA318.tmp
+添加备注
用户贡献的备注 9 notes
OsakaWebbie ¶
7 years ago
If running on a Linux system where systemd has PrivateTmp=true (which is the default on CentOS 7 and perhaps other newer distros), this function will simply return "/tmp", not the true, much longer, somewhat dynamic path.
royanee at yahoo dot com ¶
10 years ago
As of PHP 5.5.0, you can set the sys_temp_dir INI setting so that this function will return a useful value when the default temporary directory is not an option.
Anonymous ¶
17 years ago
This function does not always add trailing slash. This behaviour is inconsistent across systems, so you have keep an eye on it.
Ismail Asci ¶
11 years ago
It's not documented but this function does not send the path with trailing spaces, actually it drops the slash if it exists.
https://github.com/php/php-src/blob/af6c11c5f060870d052a2b765dc634d9e47d0f18/main/php_open_temporary_file.c#L238
Anonymous ¶
9 years ago
it should be mentioned that the return value of sys_get_temp_dir() can be set using the ini-directive 'sys_temp_dir' globally as well as per directory by using
php_admin_value sys_temp_dir /path/to/tmp
Nimja ¶
9 years ago
A very helpful thing to note when on Linux:
If you are running PHP from the commandline you can use the environment variable: TMPDIR - to change the location without touching php.ini. - This should work on most versions of PHP.
Example file: test.php
<?php
echo sys_get_temp_dir() . PHP_EOL;
?>
And then running:
php test.php
/tmp
TMPDIR=/custom/location php test.php
/custom/location
Arthur Clifford ¶
4 years ago
That is important for the purposes of building paths through concatenation to know that sys_get_temp_dir does not include a path separator at the end.
So, sys_get_temp_dir() will return whatever your temp dir is set to, by default:
/tmp
If you attempted to concatenate another dir name temp and use the following:
mkdir(sys_get_temp_dir() . 'some_dir');
That would actually attempt to generate:
/tmpsome_dir
It would likely result in a permission error unless you are running a php script as a super user.
Instead you would want to do:
mkdir( sys_get_temp_dir() . DIRECTORY_SEPARATOR. 'some_dir' );
which would create:
/tmp/some_dir
I don't know if Windows or other platforms include a directory separator at the end. So if you are writing something a bit more general you may want to check for the path separator at the end and if it is not there append it.
bert-jan at bugbyte dot nl ¶
14 years ago
This function does not account for virtualhost-specific modifications to the temp path and/or open_basedir:
<Virtualhost>
php_admin_value open_basedir /home/user
php_admin_value upload_tmp_dir /home/user/tmp
php_admin_value session.save_path /home/user/tmp
</Virtualhost>
Within this config it still returns /tmp
ohcc at 163 dot com ¶
8 years ago
when the sys_temp_dir directive is left unset, sys_get_temp_dir() returns C:\Windows on my Windows.
备份地址:http://www.lvesu.com/blog/php/function.sys-get-temp-dir.php