我想访问一个充满mp3文件的目录,该目录位于我的虚拟服务器的根目录之外。
我在虚拟主机中尝试了很多不同的配置而没有运气。我读的越多,我看到的解决方案就越多。它们都不适合我。
这是我能管理的最好的
DocumentRoot /var/www/www.dmdefd.com
ServerName www.dmdefd.767
<Directory "/var/www/www.dmdefd.com">
allow from all
Options Indexes FollowSymLinks MultiViews
Require all granted
</Directory>
alias /mp3music '/media/dmd/DUsers/music'
<Directory "/media/dmd/DUsers/music">
#Options Indexes MultiViews FollowSymLinks - no help
Options +Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>
我重新启动Apache,然后尝试使用
从PHP访问文件<?php
$root = $_SERVER["DOCUMENT_ROOT"];
$time = new Datetime();
echo $time->format ("H:i:s")."<br>";
echo $root."<br>";
echo realpath ("$root/mp3music")."<br>";
$biglist = scandir ("$root/mp3music/");
?>
,结果是
Warning: scandir(/var/www/www.dmdefd.com/mp3music/): failed to open dir: No such file or directory in /var/www/www.dmdefd.com/musicmanager/aliases.php on line 9
Warning: scandir(): (errno 2): No such file or directory in /var/www/www.dmdefd.com/musicmanager/aliases.php on line 9
请注意,虚拟服务器工作正常,我无法访问文件。
答案 0 :(得分:0)
您的PHP代码会在DOCUMENT_ROOT CGI变量下查找您的磁盘音乐。只有一个DOCUMENT_ROOT - 如果您碰巧通过Alias或mod_userdir访问文件,它不会改变。
Apache在2.4中有一个相对较新的/优先级添加名为CONTEX_DOCUMENT_ROOT,它是Alias指令提供的前缀。
除此之外,您可以在Apache配置中设置自己的环境变量,或者让您的PHP代码知道您的音乐直接存在的位置。