[英]How can I make the php files inside an includes/ folder readable by the website but not downloadable by file download managers?
我有一個小的 PHP/MySQL 項目,我想上傳到我們的子域。 該項目有一個 includes/ 文件夾,其中包含一些 PHP 文件,這些文件包含有關數據庫名稱、用戶名、密碼和登錄 function 的信息。
我怎樣才能使這個目錄的文件可以被網站讀取(所以當有人訪問網站時,他們可以登錄並做其他事情)但公眾無法訪問? 我可以使用文件下載器來下載我想要阻止的文件夾的內容。
解決方案是使用 .htaccess 文件嗎?
編輯:
謝謝大家的回答。 經過一番閱讀,我將文件夾結構切換為如下所示:
includes/
- initiate.php
- login.inc.php
- functions.inc.php
public/
- index.php
- login.php
templates/
- header.php
- footer.php
我現在在設置相對和絕對路徑常量時遇到問題
initial.php 有我的常量變量:
define('INITIATE_FOLDER', dirname(__FILE__));
define('ROOT_FOLDER', dirname(INITIATE_FOLDER));
define('TEMPLATES', ROOT_FOLDER . '/templates');
define('INCLUDES', ROOT_FOLDER . '/includes');
define('WWW_ROOT', ROOT_FOLDER . '/public');
當我回顯常量時,我得到以下信息:
echo INITIATE_FOLDER; C:\wamp64\www\project\includes
echo ROOT_FOLDER; C:\wamp64\www\project
echo INCLUDES; C:\wamp64\www\project/includes
echo TEMPLATES; C:\wamp64\www\project/templates
echo WWW_ROOT; C:\wamp64\www\project/public
你能告訴我我做錯了什么以及如何糾正嗎?
正如其他人所說,只要您的文件以.php
結尾,那么<?php?>
標記之間的所有內容都會在您的服務器提供之前從頁面中刪除。
如果您試圖阻止提供非 php 文件,最好的辦法是將您的包含文件夾放在不公開的位置。
一般來說,當你 FTP 進入你的服務器時,布局是這樣的:
www/
public_html/
... etc, other folders
您想要公開的文件應該 go 位於 public_html/www 文件夾內(www 通常只是 public_html 的快捷方式/符號鏈接)。
您應該將目錄 go 包含在public_html
文件夾旁邊,而不是在其中。
www/
public_html/
includes/
... etc, other folders
然后,在您包含這些文件的文件中,從新位置包含它們。
<?php
require_once "includes/databaseSettings.php";
變成
<?php
require_once "../includes/databaseSettings.php";
現在,您的文件位於 HTTP 服務器所服務的目錄之外,但仍可包含在代碼的 rest 中。
這通常是我的經驗,但可能因供應商而異。 如果,當您 FTP 進入您的服務器時,您沒有看到www
或public_html
文件夾,請嘗試向上導航一個目錄。
如果您的服務器設置正確,則不會下載任何 PHP 文件,僅執行。
基本上,如果文件以<?php
開頭,則您安裝了 PHP 擴展,那么它將是可執行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.