以前我可以在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 \语音路径中。我该怎么办?
答案 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'
可能不存在。