Я использую функцию move_uploaded_file для загрузки файлов. Файлы перемещаются в нужный каталог, и я вижу его физическое существование, но не могу их открыть. Я получаю сообщение об ошибке «Отказано в доступе». Я просматриваю свойства файла и обнаружил, что у него нет владельца.
Кстати, я использую IIS на Windows 2008.
Проверяю разрешения, все настроено правильно. Пользователь, запускающий веб-службу, имеет полные права администратора.
Кроме того, я заменил функцию move_uploaded_file на функцию copy() и смог получить доступ к файлу. У него также был пользователь, управляющий сервером, в качестве его владельца.
Что, черт возьми, может быть не так?
Спасибо, я ценю вашу помощь.
ОБНОВЛЕНИЕ: после перемещения файла я попытался установить разрешения с помощью chmod($filename,0655), но это тоже не сработало.
ОБНОВЛЕНИЕ 2 (решение): Хорошо, ребята, я разобрался. Системный администратор не установил upload_tmp_dir. Это сработало, как только мы добавили путь.
Исходный код:
// Check if file was uploaded
if(isset($_FILES['formname']) && $_FILES['formname']['size'] > 8){
$displayName = $_FILES['formname']['name'];
$displayName = unixfilename(basename($displayName));
$tempName = $_FILES['formname']['tmp_name'];
$filename = $_FILES['formname']['name'];
$fileType = substr($filename, strrpos($filename,".")+1);
$filename = substr($filename,0,strrpos($filename,".")) . date("_Ymd_His") . ".$fileType"; // Add unique identifier
$filename = unixfilename(basename($filename));
$destinationPath = "xx\yy\zz\\";
// Check if the file is of a valid type
if($fileType == "txt"){
// Check if file exists in processor folder
if(!file_exists($destinationPath.$filename)){
if(move_uploaded_file($tempName,$destinationPath.$filename)){
if(file_exists($destinationPath.$filename)){
// success