2024年PHP开发者大会日本站

sys_get_temp_dir

(PHP 5 >= 5.2.1, PHP 7, PHP 8)

sys_get_temp_dir返回用于临时文件的目录路径

描述

sys_get_temp_dir(): string

返回PHP默认存储临时文件的目录路径。

参数

此函数没有参数。

返回值

返回临时目录的路径。

示例

示例 #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条注释

46
OsakaWebbie
7年前
如果在systemd具有PrivateTmp=true的Linux系统上运行(这是CentOS 7和其他一些较新发行版的默认设置),此函数将只返回“/tmp”,而不是真正的、更长、有些动态的路径。
26
royanee at yahoo dot com
10年前
从PHP 5.5.0开始,您可以设置sys_temp_dir INI设置,以便当默认临时目录不可用时,此函数将返回有用的值。
24
匿名用户
16年前
此函数并不总是添加尾部斜杠。此行为在不同系统之间不一致,因此您需要注意它。
11
Ismail Asci
10年前
虽然没有文档说明,但此函数不会在路径末尾添加空格,实际上,如果存在斜杠,它会删除斜杠。

https://github.com/php/php-src/blob/af6c11c5f060870d052a2b765dc634d9e47d0f18/main/php_open_temporary_file.c#L238
9
匿名用户
9年前
应该提到的是,sys_get_temp_dir()的返回值可以使用ini指令'sys_temp_dir'全局设置,也可以通过使用以下方法按目录设置:
php_admin_value sys_temp_dir /path/to/tmp
7
Nimja
9年前
在Linux上需要注意的一个非常有用的事情

如果您是从命令行运行PHP,您可以使用环境变量:TMPDIR - 来更改位置,而无需修改php.ini。 - 这应该适用于大多数版本的PHP。

示例文件:test.php
<?php
echo sys_get_temp_dir() . PHP_EOL;
?>

然后运行

php test.php
/tmp

TMPDIR=/custom/location php test.php
/custom/location
1
Arthur Clifford
4年前
重要的是,为了通过连接构建路径,要知道sys_get_temp_dir不会在末尾包含路径分隔符。

因此,sys_get_temp_dir()将返回您的temp dir设置为的任何值,默认为

/tmp

如果您尝试连接另一个目录名temp并使用以下命令:

mkdir(sys_get_temp_dir() . 'some_dir');

这实际上将尝试生成
/tmpsome_dir

除非您以超级用户身份运行php脚本,否则这可能会导致权限错误。

相反,您应该执行以下操作:
mkdir( sys_get_temp_dir() . DIRECTORY_SEPARATOR. 'some_dir' );

这将创建
/tmp/some_dir

我不知道Windows或其他平台是否在末尾包含目录分隔符。因此,如果您编写的内容更通用一些,您可能需要检查路径分隔符是否在末尾,如果不在,则追加它。
4
bert-jan at bugbyte dot nl
14年前
此函数没有考虑对临时路径和/或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>

在此配置中,它仍然返回/tmp
1
ohcc at 163 dot com
8年前
当sys_temp_dir指令未设置时,sys_get_temp_dir()在我的Windows系统上返回C:\Windows。
To Top