2017-03-04 114 views
0

我想要訪問一個目錄,其中包含位於我的虛擬服務器根目錄之外的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

您是否試過軟鏈接或硬鏈接目錄? Apache不會脫離它的文檔根源afaik – Psi

+0

硬連接不起作用。您應該能夠訪問文檔根目錄之外的文件。 Stack Overflow有很多例子。我只是無法讓它工作。 –

+0

我知道我曾試圖做同樣的事情,並且在一段時間之前失敗了。據我記憶,這是由於在覈心配置的某個地方存在一個目錄,該目錄在apache中鎖定到該目錄。 – Psi

回答

0

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

Apache在2.4中名爲CONTEX_DOCUMENT_ROOT的相對較新/優先級增加,它可能是由Alias指令提供的前綴。除此之外,你可以在Apache配置中設置你自己的環境變量,或者讓你的PHP代碼知道你的音樂直接存在於哪裏。

相關問題