PHP 7.0.14 Released

sys_get_temp_dir

(PHP 5 >= 5.2.1, PHP 7)

sys_get_temp_dirDevuelve la ruta del directorio para archivos temporales

Descripción

string sys_get_temp_dir ( void )

Devuelve la ruta del directorio donde PHP almacena los archivos temporales por defecto.

Valores devueltos

Devuelve la ruta del directorio temporal.

Ejemplos

Ejemplo #1 sys_get_temp_dir() example

<?php
// Crear un fichero en el temporal 
// directorio de archivos utilizando sys_get_temp_dir()
$temp_file tempnam(sys_get_temp_dir(), 'Tux');

echo 
$temp_file;
?>

El resultado del ejemplo sería algo similar a:

C:\Windows\Temp\TuxA318.tmp

Ver también

  • tmpfile() - Crea un archivo temporal
  • tempnam() - Crea un fichero con un nombre de fichero único

add a note add a note

User Contributed Notes 8 notes

up
15
royanee at yahoo dot com
2 years ago
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.
up
13
Anonymous
8 years ago
This function does not always add trailing slash. This behaviour is inconsistent across systems, so you have keep an eye on it.
up
5
Ismail Asci
2 years ago
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
up
6
bert-jan at bugbyte dot nl
6 years ago
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
up
2
ohcc at 163 dot com
4 months ago
when the sys_temp_dir directive is left unset, sys_get_temp_dir() returns C:\Windows on my Windows.
up
-5
Anonymous
1 year ago
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
up
-3
Nimja
1 year ago
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
up
-35
dannel at aaronexodus dot com
7 years ago
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;
  }
}
?>
To Top