2013-04-08 57 views
1

你好我已經在這個腳本上工作了兩個星期,我不知道該怎麼做。
我在PHP工作,我想下載視頻,問題在於「讀取文件」功能不適用於/ var/www文件,這是一個問題,因爲我有很多視頻,沒有足夠的空間/分區。這是我的腳本謝謝。Php readfile('/ home/myhome/video.mp4')

$fichero = "/home/myhome/Video/$video"; 

if (file_exists($fichero)) { 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename='.basename($fichero)); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($fichero)); 
     ob_clean(); 
     flush(); 
     readfile($fichero); 
     exit; 
}else{ 
    die("The File $fichero does not exist"); 
} 

我雙重檢查的地址,我增加了下載的最大尺寸,所以請,如果您有任何解決方案,這將是巨大的。

+0

它應該對它們起作用。什麼是進入你的視頻目錄的權限?你也可以在你的'www'目錄內創建一個'video'目錄的鏈接,並確保所有文件都是全局可讀的('+ r')。 – Jon 2013-04-08 15:14:35

+0

那麼究竟是什麼問題呢? '/ var/www'與腳本中提到的'/ home/myhome/Video'有什麼關係? – pilsetnieks 2013-04-08 15:15:25

回答

2

您可以使用國防部重寫做到這一點:

http://httpd.apache.org/docs/2.2/urlmapping.html

使用類似:

RewriteEngine On 
Alias /videos /home/myhome/Video 

將在/home/myhome/Video/任何文件映射到www.site.com/videos/

或者你可以更具體一點,並基於正則表達式匹配:

RewriteEngine On 
ScriptAliasMatch ^/videos/([^\.])+.mp4 /home/myhome/Video/$1.mp4 

將其映射其規則匹配的任何文件:/videos/everythingexepctadot.mp4和IT這與一些的RewriteCond的映射到/home/myhome/Video/matchedtext.mp4

夫婦和你有youself非Web根目錄服務備份數據的簡單方法。

+0

它幾乎工作,但我有問題的權限。我將它們改爲777,但仍然出現403錯誤。 – 2013-04-18 20:01:02

0



請先檢查目錄的讀寫權限。只需在代碼下面嘗試動態設置權限即可。

chmod("/home/myhome/Video/", 0644); 

$fichero = "/home/myhome/Video/$video"; 

if (file_exists($fichero)) { 
//Your Code 
}else{ 
//Your Code 
} 

乾杯,
簡森。