Настройки php.ini:
open_basedir="/var/www/html/site.ru"
upload_tmp_dir="/var/www/html/site.ru/tmp"
Потом создаю новый временный файл, а он создается в /tmp, куда соответственно доступа нет.
$tmp = tmpfile();
var_dump(stream_get_meta_data($tmp));
array(9) {
...
["uri"]=>
string(14) "/tmp/phpE7hLsa"
}
Подскажите, может нужно еще что-нибудь настроить?
UPD: Web-сервер apache2. Папка на сервере существует, и даже файлы с форм нормально принимаются. А вот если создавать временный файл через tmpfile(), то он создается в /tmp
В общем, похоже, что функция tmpfile() использует системную временную папку, и значение upload_tmp_dir в php.ini никак не влияет на директорию созданного файла.
Решила проблему таким образом:
$tmpFileName = tempnam(ini_get('upload_tmp_dir'), 'php');
$tmpResource = fopen($tmpFileName, 'r+b');
// какие-то действия с файлом
fclose($tmpResource);
unlink($tmpFileName);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей