访问另一个驱动器的文件

时间:2012-04-25 08:02:22

标签: php iis-7

以前我可以在php和IIS中下载wav文件。但现在文件不可下载。我不知道出了什么问题。在IIS中使用php管理器安装和更改php 5.3到php 5.4之后,该文件无法下载。我有链接到文件下载它看起来像这样:

       <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文件的音频播放器。因此,我得出结论,路径中存在错误,不允许访问另一个驱动器的文件。我在c:\ inetpub \ wwwroot \中有php代码,但要下载的wav文件位于d:\ temp_file \语音路径中。我该怎么办?

2 个答案:

答案 0 :(得分:1)

可能是PHP open_basedir限制。

尝试将d:/temp_file/voice/添加到php.ini

中的内容中

<强>更新

我从未使用过IIS,但您需要检查的另一件事是IIS用户是否有权读取该目录。尝试添加(仅用于测试)Everyone并获得d:\temp_file\voice的所有权限。

答案 1 :(得分:0)

  

我不知道出了什么问题

然后是enable error reporting,对于我看来这是header('Content-Disposition: attachment; filename='".$filename.'"')的语法错误,您在'之后错过了引用(filename='")。但既然你说它有效(并且没有if),我会说这是一个复制粘贴错误。

然后执行var_dump($filename),其中可能包含引号,因为您将这些内容放在链接(<a href="download.php?voice='$filename'">)中。文件D:/temp_file/voice/'foo.wav'可能不存在。

相关问题