2010-01-26 22 views
6

假設,如果我想改變的php.ini和.htaccess有什麼不同?

php_value post_max_size 20M in .htaccess 

post_max_size 20M in php.ini 

兩個值會做同樣的操作。那麼php.ini.htaccess之間有什麼區別?

+0

如果您使用的是單個主機,則差異較小。這些文件存在於託管多個站點的系統的兩個不同位置(例如,共享Web主機),因此可以逐個站點地配置配置選項,而不會向用戶授予對a)會影響其他用戶的文件的權限b )有危險的慷慨的權限。 – antik

回答

11

php.ini中的配置用於整個服務器而在htaccess的文件中的配置僅用於當請求轉到目錄或子目錄的htaccess的文件位於。

所以,你可以在的.htaccess文件的php.ini全局或默認配置,具體配置爲單個目錄。此外,虛擬主機提供商通常不允許訪問php.ini或服務器配置,但只允許.htaccess文件。

但注意每個PHP配置都綁定了configuration modes

+0

+1對。是不是有可能有每個目錄的php.ini?還是隻在IIS上? –

1

這取決於如何在您的服務器上安裝PHP;如果將它安裝爲apache模塊,那麼您將使用.htaccess文件發出PHP指令,因爲.htacess由Apache讀取並執行。

如果您將PHP作爲CGI運行,那麼您將使用php.ini文件,因爲.htaccess中的任何內容都不會影響您的PHP。

您可以通過phpinfo()創建一個php文件來檢查PHP是如何安裝的;它在。

這只是指一個特定目錄的本地覆蓋;不管PHP如何安裝,它都會讀取您的主php.ini文件。

2

PHP.ini中的配置值適用於整個服務器,它將應用於該服務器上運行的所有站點。 配置值放入.htaccess的地方適用於單個站點。

+0

是否存在安全角度哪個好 – Bharanikumar

+0

在PHP.ini中配置錯誤的人實際上可以訪問你的.htaccess文件。 正如前面提到的,如果你的配置沒有特定的站點在PHP.ini中聲明它們,如果你想讓一個特定的站點具有特定的配置,在.htaccess中定義它們。 – Zaje

1

不是你的問題的答案,而是一個有趣的小知識,我不知道自己,當在Windows上使用PHP時,可以在註冊表中設置每個目錄的設置。從manual:通過Windows註冊表

當在Windows上運行PHP

修改PHP配置,配置值可以使用Windows註冊表以目錄爲單位來修改。配置值存儲在註冊表項HKLM \ SOFTWARE \ PHP \ Per Directory Values中,與路徑名相對應的子鍵中。例如,目錄c:\ inetpub \ wwwroot的配置值將存儲在密鑰HKLM \ SOFTWARE \ PHP \ Per Directory Values \ c \ inetpub \ wwwroot中。該目錄的設置對於從該目錄或其任何子目錄運行的任何腳本都是有效的。該鍵下的值應該具有PHP配置指令的名稱和字符串值。值中的PHP常量不被解析。但是,只能通過這種方式設置PHP_INI_USER中可更改的配置值,而PHP_INI_PERDIR值則不能。