2013-05-30 140 views
0

這可能看起來像一個重複的問題,但我已經嘗試類似問題中給出的解決方案。拒絕直接訪問文件夾中的任何文件使用Apache/PHP

我想限制訪問我的apache服務器上的幾個文件夾中的文件,以便他們只能通過php腳本服務,只有登錄到我的系統應該有權訪問任何特定文件夾的用戶。

其他解決方案建議使用的.htaccess

deny from all 
allow from 127.0.0.1 

,但似乎從everywhere.Including當地的PHP腳本否認的文件。

我正在考慮.htpasswd,但這是需要處理的用戶憑據的額外級別,我願意避免這種情況。

我該如何解決這個問題?有沒有更好的方式來存儲文件?

+0

上述解決方案應該可以工作。除非你的本地腳本做了一些奇怪的事情(例如通過http訪問本地文件) – 2013-05-30 23:03:43

+0

我知道這也是我的期望。但是當我調用<?php include('file.php')?>它顯然不會讀取它。我不認爲一個包含可能被認爲是一件非常奇怪的事情。 –

+1

'.htaccess'選項就是你想要的。它會拒絕整個目錄,包括你想要通過的腳本,如果它在那裏。解決方案是將腳本移動到其他位置 –

回答

0

不知怎的,PHP是由

deny from all 
allow from 127.0.0.1 

限制包括,需要在受影響的文件夾中的文件。這與我可以從apache文檔中讀取的內容相反,這應該如何工作,並且我沒有真正的答案。這個問題在使用Xampp的本地主機和webhotel one.com上都存在。

我的原始問題很糟糕,因爲我使用require來測試當我真的想要使用readfile時是否有讀取文件夾的權限。

我主要關心的是,我想提供文件從無法訪問的目錄下載。 和

readfile($filename); 

仍然可以訪問這些文件。

這個問題的靈魂是,我意識到readfile()和include()somhow獲得不同的權限。我無法在任何文檔中找到它。

0

htaccess無法通過php使用include/require函數拒絕對文件的訪問。如果你的php include沒有訪問這個文件,那麼問題就是這個文件的路徑。

+0

當我從.htaccess中刪除拒絕時,仍然包含作品。無法解釋的原因,我很想知道是否有任何錯誤輸出,可以告訴我發生了什麼事情。 –