-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());
?>
sys_get_temp_dir
(PHP 5 >= 5.2.1)
sys_get_temp_dir — Retourne le chemin du répertoire utilisé pour les fichiers temporaires
Description
string sys_get_temp_dir
( void
)
Retourne le chemin du répertoire PHP où sont enregistrés les fichiers temporaires par défaut.
Valeurs de retour
Retourne le chemin du répertoire temporaire.
Exemples
Exemple #1 Exemple avec sys_get_temp_dir()
<?php
// Création d'un fichier temporaire dans le dossier
// des fichiers temporaires, en utilisant la fonction sys_get_temp_dir()
$temp_file = tempnam(sys_get_temp_dir(), 'Tux');
echo $temp_file;
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
C:\Windows\Temp\TuxA318.tmp
sys_get_temp_dir
php at ktools.eu
17-Oct-2009 06:29
17-Oct-2009 06:29
dannel at aaronexodus dot com
07-Sep-2009 08:11
07-Sep-2009 08: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-Aug-2008 11:20
22-Aug-2008 11: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
01-Aug-2008 08:31
01-Aug-2008 08: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-Jan-2008 12:08
29-Jan-2008 12: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-Nov-2006 02:04
23-Nov-2006 02: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;
}
}
}
}
?>
