Php 访问另一个驱动器的文件

Php 访问另一个驱动器的文件,php,iis-7,Php,Iis 7,以前我可以下载php和IIS中的wav文件。但现在文件无法下载。我不知道出了什么问题。在IIS中使用php manager安装php 5.3并将其更改为php 5.4后,无法下载该文件。我有一个文件的链接来下载它,看起来像这样: <a href="download.php?voice='$filename'"> Download </a> 下载.php脚本 <?php $filename = $_GET['voice'];

以前我可以下载php和IIS中的wav文件。但现在文件无法下载。我不知道出了什么问题。在IIS中使用php manager安装php 5.3并将其更改为php 5.4后,无法下载该文件。我有一个文件的链接来下载它,看起来像这样:

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

下载.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);
       }
      ?>
可能是PHP限制

尝试将
d:/temp\u file/voice/
添加到
php.ini
中的内容中

更新

我从未使用过IIS,但您必须检查的另一件事是IIS用户是否有权读取该目录。尝试添加,只是为了测试,
Everyone
,并具有
d:\temp\u file\voice
的所有权限

我不知道出了什么问题

然后,在我看来,这是
标题('Content-Disposition:attachment;filename='“$filename.”“)
处的语法错误,在
文件名='“
之后缺少一个引号(
)。但既然你说它起作用了(并且在没有
if
的情况下起作用),我就说这是一个复制粘贴错误


然后执行
var\u dump($filename)
,其中可能包含引号,因为您将引号放在链接中的URL周围(
)。文件
D:/temp\u file/voice/'foo.wav'
可能不存在。

如何在IIS 7中消除此限制?您是否进行了相同的测试?例如添加该指令,或使用
fileperms()检查文件权限
?我通过将文件放在wwwroot文件夹内部和外部进行了测试……虽然wwwroot内部的文件是可下载的,而外部的文件是不可下载的,但是PHP文件系统实现中不存在文件
$dir.$filename
是文件($dir.$filename)
等于
FALSE
)。请指定有问题的具体文件名(什么是
var_dump($dir.$filename);
output?),确保它存在于磁盘上并且可以被PHP访问(文件系统权限)。