Тихая ошибка на move_uploaded_file и ZipArchive :: Close - PullRequest
0 голосов
/ 08 марта 2012

ОБНОВЛЕНИЕ / ВОЗМОЖНОЕ РЕШЕНИЕ: Я понял, что файлы перемещаются из C:\Windows\Temp, но они невидимы из-за прав доступа к файлам.Если я пытаюсь получить доступ к файлам через браузер, я получаю ошибку 401.Я считаю, что эти файлы сохраняют свои исходные права доступа, поэтому я не могу их увидеть или связываться с ними через PHP / браузер.Единственный вариант - изменить разрешения для папки C:\Windows\Temp или переместить папку default_upload_folder во что-либо в цепочке wwwroot.

-

У меня есть сервер IIS7, на котором запущен скрипт PHP, который принимает $_FILES, делает move_uploaded_file, чтобы добавить файлы в каталог, а также объединяет файлы в архив, используя ZipArchive.

Оба эти утверждения не выполняются.

Вот логика кода:

ini_set('display_errors',1);

if(!empty($_FILES)){

   $tempFile = $_FILES['Filedata']['tmp_name'];
   $targetPath = 'C:\\inetpub\\wwwroot\\sitename\\design\\uploads\\';
   $targetFile = $targetPath.$_FILES['Filedata']['name'];

   $zip_file = $targetPath . htmlspecialchars($_POST['session_id']) . '.zip';

   move_uploaded_file($tempFile, $targetFile);

   $zip = new ZipArchive;
   $res = $zip->open($zip_file, ZipArchive::CREATE);
   $zip->addFile($tempFile, $_FILES['Filedata']['name']);
   $zip->close();

}

$tempFile и $targetPath показывают, что имеют разрешения 0777когда я проверяю их из скрипта.

move_uploaded_file не показывает ошибки и возвращает true, но ошибки, если я использую другой каталог.Похоже, этот каталог правильный.Этот код не может переместить файл в новый каталог.Нет сообщения об ошибке, если я использую try...catch.

Ни один из ZipArchive кодов не будет работать до $zip->close(), что возвращает false.Нет сообщения об ошибке, если я использую try...catch.

Код отлично работал в моей тестовой среде WAMP.Код, выполняющий этот сценарий: C:\inetpub\wwwroot\sitename\design\uploadify\uploadify.php.

$_FILES содержит правильные данные, основанные на var_dump.$tempFile разрешается до C:\Windows\Temp\php___.tmp.У меня такое чувство, что это может быть моей проблемой, но я не знаю, как ее решить.

1 Ответ

0 голосов
/ 08 марта 2012

Проверьте, есть ли у вас настройка doc_root в php.ini, указывающая на правильный каталог.Вы также должны указать upload_tmp_dir (в разделе File uploads; подпапка doc_root будет удивительным), чтобы убедиться, что он отличается от системного значения по умолчанию.

...