Невозможно создать временный файл в PHP, несмотря на то, что существует каталог temp

Я делаю сайт, который позволяет пользователю загружать изображения. Когда я делаю вызов переменной $ _FILE, чтобы переместить изображение в другой каталог, он ничего не делает. Проверка $ _FILE с помощью print_r показывает следующую информацию:

( [pic1] => Array ( [name] => pic1 [type] => [tmp_name] => [error] => 6 [size] => 0 ) ) 

Кажется, что ошибка 6

 UPLOAD_ERR_NO_TMP_DIR Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3. 

Но у меня есть большая проблема: я могу получить доступ только к каталогу, в который я помещаю файлы, я не могу проверить, существует ли временная директория или проверить php.ini (сервер от моего клиента, и он не может дать мне доступ к другим каталогам)

К счастью, клиент проверяет эти параметры и рассказывает мне, как они выглядят. Итак, временный каталог (upload_tmp_dir) установлен в / tmp. Каталог / tmp фактически существует и имеет все разрешения:

 drwxrwxrwt 34 root root 2832 2014-08-30 00:00 tmp 

Я искал причины, почему он показывает ошибку «Отсутствует временная папка», несмотря на ее существование, но я не могу найти причину или решение. Я оставляю здесь pastebin с выходом ini_get_all ()

Если вы можете прокомментировать любое возможное решение, я буду благодарен. Благодарю.

Вы можете изменить, какой каталог является «tmp», используя эту функцию: http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir

но, видимо, вам придется сделать это в основном файле ini: http://www.reddit.com/r/PHP/comments/1c87xk/can_i_use_ini_set_to_set_the_value_of_upload_tmp/

Попросите вашего клиента исправить конфигурацию своего сервера.

Вы ничего не можете сделать, если у них что-то сломано, и я не могу себе представить, что они будут сражаться с вами, если вы это исправите. Это не техническая проблема … вы уже решили техническую часть.

Проверьте наличие open_basedir . Если он включен, в руководстве по PHP указано:

Если open_basedir включен, то для успешной загрузки должна быть разрешена системная папка по умолчанию.

Также вы можете указать настраиваемый каталог, и вы должны убедиться, что он еще не установлен, но не доступен для записи. Также на этой же странице указано, что если указанный каталог не доступен для записи, PHP возвращается к временному каталогу по умолчанию (/ tmp).

Не знаете, как никто не указал на это. Но насколько я знаю. Никто не запускает php под правами root, у которых папка / tmp имеет корень: root. Я могу только предположить, что если вы будете использовать file_put_contents или fopen('/tmp/some_new_file')... это должно привести к fopen('/tmp/some_new_file')... определенного разрешения или тому подобное. Поэтому вы должны постоянно обновлять php.INI доступной папкой для пользователя php, чтобы избежать повторения ошибки