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
+add a note
User Contributed Notes 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 ¶
16 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 ¶
10 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.