Php 访问另一个驱动器的文件
以前我可以下载php和IIS中的wav文件。但现在文件无法下载。我不知道出了什么问题。在IIS中使用php manager安装php 5.3并将其更改为php 5.4后,无法下载该文件。我有一个文件的链接来下载它,看起来像这样: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'];
<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访问(文件系统权限)。