访问文档根目录之外的文件

时间:2017-03-04 19:57:55

标签: php ubuntu apache2

我想访问一个充满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

请注意,虚拟服务器工作正常,我无法访问文件。

1 个答案:

答案 0 :(得分:0)

您的PHP代码会在DOCUMENT_ROOT CGI变量下查找您的磁盘音乐。只有一个DOCUMENT_ROOT - 如果您碰巧通过Alias或mod_userdir访问文件,它不会改变。

Apache在2.4中有一个相对较新的/优先级添加名为CONTEX_DOCUMENT_ROOT,它是Alias指令提供的前缀。

除此之外,您可以在Apache配置中设置自己的环境变量,或者让您的PHP代码知道您的音乐直接存在的位置。