доступ к файлу другого диска

ранее я мог скачать wav-файл в php и IIS. Но теперь файл не загружается. Я не знаю, что происходит не так. После установки и изменения php 5.3 в php 5.4 с помощью php-менеджера в IIS файл не может быть загружен. У меня есть ссылка на файл, чтобы загрузить его, который выглядит так:

<a href="download.php?voice='$filename'"> Download </a> 

скрипты download.php

  <?php $filename = $_GET['voice']; $dir = 'd:/temp_file/voice/'; if(is_file($dir.$filename)) { header('Content-type: audio/wav'); header('Content-Disposition: attachment; filename='".$filename.'"'); echo file_get_contents($dir.$filename); } ?> 

в то время как я пытался найти ошибку, почему файл не загружаем, я удаляю инструкцию if и запускаю программу, она запрашивает файл загрузки окна с аудио-плеером пустого wav-файла. Итак, я пришел к выводу, что в пути есть ошибка, которая не позволяет получить доступ к файлу другого диска. У меня есть php-код в c: \ inetpub \ wwwroot \, но wav-файл, который будет загружаться, находится в пути d: \ temp_file \ voice. Что мне нужно делать?

Возможно, PHP open_basedir ограничение.

Попробуйте добавить d:/temp_file/voice/ в свой контент в php.ini .

Обновить

Я никогда не использовал IIS, но еще одна вещь, которую вы должны проверить, – это если у пользователя IIS есть разрешение на чтение этого каталога. Попробуйте добавить, просто для теста, Everyone со всеми разрешениями на d:\temp_file\voice .

Я не знаю, что происходит

Затем включите отчет об ошибках , для чего мне кажется, что это синтаксическая ошибка в header('Content-Disposition: attachment; filename='".$filename.'"') , Вам не хватает цитаты ( ' ) после filename='" . Но так как вы говорите, что это сработало (и работает без if ), я бы сказал, что это ошибка копирования.

Затем выполните var_dump($filename) , который может содержать кавычки, поскольку вы помещаете их вокруг URL-адреса в ссылку ( <a href="download.php?voice='$filename'"> ). Файл D:/temp_file/voice/'foo.wav' не может существовать.