簡體   English   中英

訪問文檔根目錄之外的文件

[英]Accessing files outside document root

我想訪問一個目錄,里面充滿了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

請注意,虛擬服務器工作正常,只是無法訪問文件。

您的PHP代碼在DOCUMENT_ROOT CGI變量下查找磁盤音樂。 只有一個DOCUMENT_ROOT-如果您恰巧通過Alias或mod_userdir訪問文件,則不會更改。

Apache在2.4中有一個相對較新的優先級,稱為CON​​TEX_DOCUMENT_ROOT,這是Alias指令提供的前綴。

除此之外,您可以僅在Apache配置中設置自己的環境變量,或者讓您的PHP代碼直接知道音樂的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM