annotate core/lib/Drupal/Component/FileSystem/FileSystem.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Component\FileSystem;
Chris@0 4
Chris@0 5 /**
Chris@0 6 * Provides file system functions.
Chris@0 7 */
Chris@0 8 class FileSystem {
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Discovers a writable system-appropriate temporary directory.
Chris@0 12 *
Chris@0 13 * @return string|false
Chris@0 14 * A string containing the path to the temporary directory, or FALSE if no
Chris@0 15 * suitable temporary directory can be found.
Chris@0 16 */
Chris@0 17 public static function getOsTemporaryDirectory() {
Chris@0 18 $directories = [];
Chris@0 19
Chris@0 20 // Has PHP been set with an upload_tmp_dir?
Chris@0 21 if (ini_get('upload_tmp_dir')) {
Chris@0 22 $directories[] = ini_get('upload_tmp_dir');
Chris@0 23 }
Chris@0 24
Chris@0 25 // Operating system specific dirs.
Chris@0 26 if (substr(PHP_OS, 0, 3) == 'WIN') {
Chris@0 27 $directories[] = 'c:\\windows\\temp';
Chris@0 28 $directories[] = 'c:\\winnt\\temp';
Chris@0 29 }
Chris@0 30 else {
Chris@0 31 $directories[] = '/tmp';
Chris@0 32 }
Chris@0 33 // PHP may be able to find an alternative tmp directory.
Chris@0 34 $directories[] = sys_get_temp_dir();
Chris@0 35
Chris@0 36 foreach ($directories as $directory) {
Chris@0 37 if (is_dir($directory) && is_writable($directory)) {
Chris@0 38 // Both sys_get_temp_dir() and ini_get('upload_tmp_dir') can return paths
Chris@0 39 // with a trailing directory separator.
Chris@0 40 return rtrim($directory, DIRECTORY_SEPARATOR);
Chris@0 41 }
Chris@0 42 }
Chris@0 43 return FALSE;
Chris@0 44 }
Chris@0 45
Chris@0 46 }