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

参见

添加注释

用户贡献的注释 11 个注释

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

https://github.com/php/php-src/blob/af6c11c5f060870d052a2b765dc634d9e47d0f18/main/php_open_temporary_file.c#L238
匿名
9 年前
应该提到,sys_get_temp_dir() 的返回值可以使用 ini 指令 'sys_temp_dir' 在全局范围内设置,也可以通过使用以下方式在每个目录中设置
php_admin_value sys_temp_dir /path/to/tmp
Nimja
8 年前
在 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
ohcc at 163 dot com
8 年前
当 sys_temp_dir 指令未设置时,sys_get_temp_dir() 在我的 Windows 上返回 C:\Windows。
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
Arthur Clifford
4 年前
对于通过连接构建路径的目的来说,重要的是要知道 sys_get_temp_dir 不会在末尾包含路径分隔符。

所以,sys_get_temp_dir() 将返回您的 temp 目录设置为的任何内容,默认情况下

/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 或其他平台是否在末尾包含目录分隔符。因此,如果您要编写更通用一点的内容,您可能需要检查末尾是否存在路径分隔符,如果不存在,则添加它。
匿名
3 年前
在 Windows 上,当 PHP 用作 CLI 时,此函数将返回当前用户的临时目录,例如 C:\Users\JohnSmith\AppData\Local\Temp\9,而不是 C:\Windows\Temp。
besabellacyrus at gmail dot com
4 年前
在 Windows 中使用此函数时,请修剪空格并添加 ~1
To Top