Same name and namespace in other branches
  1. 4.7.x includes/file.inc \file_directory_temp()
  2. 6.x includes/file.inc \file_directory_temp()
  3. 7.x includes/file.inc \file_directory_temp()
  4. 8.9.x core/includes/file.inc \file_directory_temp()

Determine the default temporary directory.

Return value

A string containing a temp directory.

Related topics

5 calls to file_directory_temp()
file_check_upload in includes/file.inc
Verify an uploaded file.
file_save_data in includes/file.inc
Save a string to the specified destination.
file_save_upload in includes/file.inc
Saves a file upload to a new location. The source file is validated as a proper upload and handled as such.
system_file_system_settings in modules/system/system.module
upload_form_alter in modules/upload/upload.module

File

includes/file.inc, line 671
API for handling file uploads and server file management.

Code

function file_directory_temp() {
  $temporary_directory = variable_get('file_directory_temp', NULL);
  if (is_null($temporary_directory)) {
    $directories = array();

    // Has PHP been set with an upload_tmp_dir?
    if (ini_get('upload_tmp_dir')) {
      $directories[] = ini_get('upload_tmp_dir');
    }

    // Operating system specific dirs.
    if (substr(PHP_OS, 0, 3) == 'WIN') {
      $directories[] = 'c:\\windows\\temp';
      $directories[] = 'c:\\winnt\\temp';
      $path_delimiter = '\\';
    }
    else {
      $directories[] = '/tmp';
      $path_delimiter = '/';
    }
    foreach ($directories as $directory) {
      if (!$temporary_directory && is_dir($directory)) {
        $temporary_directory = $directory;
      }
    }

    // if a directory has been found, use it, otherwise default to 'files/tmp' or 'files\\tmp';
    $temporary_directory = $temporary_directory ? $temporary_directory : file_directory_path() . $path_delimiter . 'tmp';
    variable_set('file_directory_temp', $temporary_directory);
  }
  return $temporary_directory;
}