Apache-2.2
使文件可由 PHP 訪問,但不能從外部訪問
我的主人給了我兩個文件夾供我使用,一個
/home/public/
是頁面所在的位置,一個/home/private/
是我個人使用的。我希望 PHP 創建一個我可以從機器上讀取的文件,但其他任何人都不能通過 Internet 讀取。在公用文件夾中製作文件會導致此問題。我考慮過讓 apache 組擁有該文件,但我不是其中的成員。如果我可以將文件放在我的私人目錄中會很好,但可以理解的是,在嘗試寫入其中的文件時出現訪問錯誤。我該怎麼辦?
許多包需要 html 或公共層次結構中的程序/腳本可訪問子目錄。
由於您(我假設)使用 suPHP 或 equiv 在共享服務上執行,這只會在所有者 UID 中執行腳本,因此不可用。我採用了一個非常簡單的約定:如果任何文件或文件夾名稱以 _ 或 . 然後禁止通過 URI 訪問。這是一個簡單的規則,我將它放在任何
.htaccess
文件中SetEnvIf Request_URI "(^_|/_|^\.|/\.)" forbidden <Files *> Order allow,deny Allow from all Deny from env=forbidden </Files>
另一種方法是使用 RewriteRule:
RewriteRule (^_|/_|^\.|/\.) - [forbidden]
這樣做的好處是,您可以對您可能希望在腳本中訪問但不希望通過 URI 瀏覽它們的任何包含或數據目錄採用這種極其簡單的約定。
腳註
我對你的說法有點困惑:
如果我可以將文件放在我的私人目錄中會很好,但可以理解的是,在嘗試寫入其中的文件時出現訪問錯誤。
這是服務提供商的 UID 擁有 /home/private/ 並且您只能通過您的 GID 讀取訪問權限的這些有趣的事情之一嗎?我的 ISP 做同樣的事情來轉儲日誌文件之類的東西。我可以讀但不能寫或刪除。這就是我使用
/public/_private
. 對不起,矛盾的說法。