[英]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中有一個相對較新的優先級,稱為CONTEX_DOCUMENT_ROOT,這是Alias指令提供的前綴。
除此之外,您可以僅在Apache配置中設置自己的環境變量,或者讓您的PHP代碼直接知道音樂的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.