PHP Doku:: Returns directory path used for temporary files - function.sys-get-temp-dir.html

Verlauf / Chronik / History: (5) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDas Verhalten von PHP beeinflussenPHP-Optionen und -InformationenPHP-Optionen-/-Informationen-Funktionensys_get_temp_dir

Ein Service von Reinhard Neidl - Webprogrammierung.

PHP-Optionen-/-Informationen-Funktionen

<<set_time_limit

version_compare>>

sys_get_temp_dir

(PHP 5 >= 5.2.1)

sys_get_temp_dirReturns directory path used for temporary files

Beschreibung

string sys_get_temp_dir ( void )

Returns the path of the directory PHP stores temporary files in by default.

Rückgabewerte

Returns the path of the temporary directory.

Beispiele

Beispiel #1 sys_get_temp_dir() example

<?php
// Create a temporary file in the temporary 
// files directory using sys_get_temp_dir()
$temp_file tempnam(sys_get_temp_dir(), 'Tux');

echo 
$temp_file;
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

C:\Windows\Temp\TuxA318.tmp

Siehe auch

  • tmpfile() - Erstellt eine temporäre Datei
  • tempnam() - Erzeugt eine Datei mit eindeutigem Dateinamen


7 BenutzerBeiträge:
- Beiträge aktualisieren...
bert-jan at bugbyte dot nl
29.03.2010 23:06
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
17.10.2009 8:29
-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
7.09.2009 22:11
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
22.08.2008 13:20
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));
    }
  }
}
?>
radon8472 at hotmail dot com
1.08.2008 22:31
better use
tempnam(":\n\\/?><","");

To detect path by creating a temporary file.
A random directoryname can exist  (the chance is low, but it can be).
Better is to use signs, like :\n\\/?>< which are not valid, so realy NEVER a directory with this name can exist.
Anonymous
29.01.2008 13:08
This function does not always add trailing slash. This behaviour is inconsistent across systems, so you have keep an eye on it.
minghong at gmail dot com
23.11.2006 3:04
To add support of sys_get_temp_dir for PHP4/5, use the following code:

<?php
if ( !function_exists('sys_get_temp_dir') )
{
   
// Based on http://www.phpit.net/
    // article/creating-zip-tar-archives-dynamically-php/2/
   
function sys_get_temp_dir()
    {
       
// Try to get from environment variable
       
if ( !empty($_ENV['TMP']) )
        {
            return
realpath( $_ENV['TMP'] );
        }
        else if ( !empty(
$_ENV['TMPDIR']) )
        {
            return
realpath( $_ENV['TMPDIR'] );
        }
        else if ( !empty(
$_ENV['TEMP']) )
        {
            return
realpath( $_ENV['TEMP'] );
        }

       
// Detect by creating a temporary file
       
else
        {
           
// Try to use system's temporary directory
            // as random name shouldn't exist
           
$temp_file = tempnam( md5(uniqid(rand(), TRUE)), '' );
            if (
$temp_file )
            {
               
$temp_dir = realpath( dirname($temp_file) );
               
unlink( $temp_file );
                return
$temp_dir;
            }
            else
            {
                return
FALSE;
            }
        }
    }
}
?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)