PHP 选项/信息 函数
在线手册:中文  英文

sys_get_temp_dir

(PHP 5 >= 5.2.1)

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

说明

string sys_get_temp_dir ( void )

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

返回值

返回临时目录的路径。

范例

Example #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

参见


PHP 选项/信息 函数
在线手册:中文  英文

用户评论:

bert-jan at bugbyte dot nl (2010-03-29 13:06:59)

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

php at ktools.eu (2009-10-16 23:29:07)

-better to use the php methode 'getenv()' to access the enviroment vars
-the original 'sys_get_temp_dir()' don't use realpath, than it's better to make 'realpath(sys_get_temp_dir())'

<?php
 
if ( !function_exists('sys_get_temp_dir')) {
  function 
sys_get_temp_dir() {
      if( 
$temp=getenv('TMP') )        return $temp;
      if( 
$temp=getenv('TEMP') )        return $temp;
      if( 
$temp=getenv('TMPDIR') )    return $temp;
      
$temp=tempnam(__FILE__,'');
      if (
file_exists($temp)) {
          
unlink($temp);
          return 
dirname($temp);
      }
      return 
null;
  }
 }

 echo 
realpath(sys_get_temp_dir());
?>

dannel at aaronexodus dot com (2009-09-07 13:11:40)

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).

Improving on the last post...

<?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 [spat] hm2k.org (2008-08-22 04:20:16)

I went ahead and slightly improved the function provided.

<?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(uniqid(rand(),TRUE),'');
    if (
file_exists($tempfile)) {
    
unlink($tempfile);
    return 
realpath(dirname($tempfile));
    }
  }
}
?>

Anonymous (2008-01-29 04:08:41)

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

易百教程