总有人间一两风,填我十万八千梦

PHP sys_get_temp_dir 用法 手册 | 示例代码

PHP开发手册 归档 774℃ 0评论

sys_get_temp_dir

(PHP 5 >= 5.2.1, PHP 7)

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

说明

sys_get_temp_dir ( void ) : string

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

返回值

返回临时目录的路径。

范例

Example #1 sys_get_temp_dir() 例子

<?php
// 使用 sys_get_temp_dir() 在目录里创建临时文件
$temp_file tempnam(sys_get_temp_dir(), 'Tux');

echo $temp_file;
?>

以上例程的输出类似于:

C:WindowsTempTuxA318.tmp

参见

  • tmpfile() – 建立一个临时文件
  • tempnam() – 建立一个具有唯一文件名的文件

用户贡献的笔记

OsakaWebbie

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

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

This function does not always add trailing slash. This behaviour is inconsistent across systems, so you have keep an eye on it.

Ismail Asci

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

ohcc at 163 dot com

when the sys_temp_dir directive is left unset, sys_get_temp_dir() returns C:Windows on my Windows.

bert-jan at bugbyte dot nl

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

Nimja

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

Anonymous

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

besabellacyrus at gmail dot com

using in windows this trim spaces and add ~1

dannel at aaronexodus dot com

There's no need to use a random name for the directory for tempnam.

Since a file and a directory can't share the same name on the filesystem, we can exploit this and simply use the name of the current file. It is guaranteed that the directory won't exist (because it's a file, of course).

<?php
if ( !function_exists('sys_get_temp_dir')) {
  function
sys_get_temp_dir() {
    if (!empty(
$_ENV['TMP'])) { return realpath($_ENV['TMP']); }
    if (!empty(
$_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
    if (!empty(
$_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
   
$tempfile=tempnam(__FILE__,'');
    if (
file_exists($tempfile)) {
     
unlink($tempfile);
      return
realpath(dirname($tempfile));
    }
    return
null;
  }
}
?>

转载请注明:悠然品鉴 » PHP sys_get_temp_dir 用法 手册 | 示例代码

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址