PHP способ найти временный путь веб-сервера? - PullRequest
10 голосов
/ 05 октября 2009

Когда вы обрабатываете HTTP-загрузку, файл загружается в

$_FILES['field_name']['tmp_name']

Я знаю, что смогу извлечь временный путь оттуда. Но я ожидал, может быть, $_SERVER параметр, у которого есть временный путь (его нет) или другой элегантный способ узнать его.

Есть ли?

Ответы [ 4 ]

25 голосов
/ 05 октября 2009
ini_get('upload_tmp_dir');
20 голосов
/ 05 октября 2009

Функция sys_get_temp_dir() возвращает путь к каталогу, используемый PHP для хранения временных файлов.

8 голосов
/ 10 января 2013

Используя XAMPP на моем частном компьютере, метод ini_get отлично работал, так как php.ini указывает значение upload_tmp_dir. Однако после загрузки на сервер моего работодателя этот код не работал, потому что значение, очевидно, не существовало в файле php.ini его сервера. Итак, я использовал системный временный каталог по умолчанию, и теперь скрипт работает на моем компьютере и на его сервере:

$ini_val = ini_get('upload_tmp_dir');
$upload_tmp_dir = $ini_val ? $ini_val : sys_get_temp_dir();
3 голосов
/ 31 июля 2012

Я бы лично использовал предложение Sbm007:

ini_get ( 'upload_tmp_dir');

Поскольку это учитывает apache для параметров виртуального хоста, таких как ограничения upload_tmp_dir и open_basedir, где:

sys_get_temp_dir ()

Возвращает только определенный временный каталог операционной системы, и если внутри многопользовательской среды может дать вам каталог, в который вы не можете писать.

...