文章目錄
-
- PHP的配置檔案
-
-
- php.ini
- .user.ini
-
- PHP相關文法
- 相關變量配置
-
-
- 啟用全局變量
- 短标簽
-
- 安全模式
-
-
- 安全模式下執行程式主目錄
- 禁用類/函數
-
- 上傳檔案及目錄權限
-
-
- 設定上傳及最大上傳檔案大小:
- 檔案上傳臨時目錄:
- 使用者通路目錄限制:
-
- 錯誤資訊
-
-
- 錯誤資訊控制
- 設定錯誤報告的級别
- 錯誤日志
-
PHP的配置檔案
php.ini
這個配置檔案也可以是
php.版本号.ini
這個配置檔案在PHP啟動的時候會被讀取,對于伺服器子產品版本的PHP,僅僅在web伺服器啟動時讀取一次.而對于CGL和CLI版本的話,每次調用都會讀取。
CGL:通用網關接口,通用網關接口用于初始化軟體服務的伺服器方接口。這套接口描述了Web伺服器與同一計算機上的軟體的通信方式。
CLI:一般指指令行界面
- Apache web伺服器在啟動時會把目錄轉到根目錄,這将導緻php在根目錄下讀取php.ini
- php.ini中可以使用環境變量
還可以在
httpd.conf
中覆寫php.ini的值,以進行更靈活的配置:
php_value name value
;設定非bool型的指令,将value設為none則清除先前的設定
php_ flagname on|off
;僅用于設定bool型的指令
PHP常量(如
E_ALL
)僅能在php ini中使用,在
httpd.conf
中必須使用相應的掩碼值。
- 帶"SYS"标志的指令隻能在
中的全局配置部分使用httpd.conf
- 帶"ini"标志的指令不能在
中使用,它們僅能用于php.ini中。httpd.conf
.user.ini
自PHP 5.3.0起,PHP支援基于每個目錄的
.htaccess
風格的INI檔案。此類檔案僅被CGI/FastCGI SAPI處理。此功能使得PECL的htscanner跨站廢棄。如果使用Apache,則用
.htaccess
有相同效果
- PHP的配置有不同的配置權限,不同的權限在不同的配置檔案是不一樣的。
在
.user.ini
風格的INI檔案中隻有具有
PHP_ INI_ PERDIR
和
PHP_ INI_ USER
模式的INI設定可被識别。
- 當使用PHP作為Apache子產品時,也可以用Apache的配置檔案(例如
)和httpd.conf
檔案中的指令來修改PHP的配置設定。需要有.htaccess
或AllowOverride Options
權限。AllowOverride All
PHP相關文法
空白字元,章節标題和以分号開始的行會被簡單的忽略
設定指令的格式:
directive = value
指令名(directive)大小寫敏感。
值(value)可以是:
①.用引号界定的字元串(如:“foo”)
②.一個數字(整數或浮點數,如:0, 1, 34, -1, 10.4)
③. 一個PHP常量(如:E_ID, M_IP)
④. 一個INI常量(On, Off, none)
⑤.一個表達式(如:E_ALL & ~E_NOTICE)
在INI檔案當中的表達式僅使用:
位運算符,邏輯非,圓括号,|位或,&位與,~位非,!邏輯非
一個空字元串可以用在等号後不寫任何東西表示或者用none關鍵字:
f = ;//将f設為空字元串
f = none ;//将f設為空字元串
f = “none” ;//将f設為空字元串"none"
如果你在指令值中使用動态擴充(PHP擴充或Zend擴充)中的常量,那麼就隻能在加載這些動态擴充的指令行之後使用這些常量。
相關變量配置
啟用全局變量
大部分情況為了安全是關閉全局變量的:
register_globals = off
當設定為on時,php會将
$_ POST, $ GET, $_ COOKIE, $ ENV,$ SESSION
數組中的
$key= > $value
直接注冊為變量,比如
$_ POST['username']
就會被注冊為
$username
。這樣容易引起變量之間互相覆寫,而且友善黑客進行攻擊。
短标簽
short_open_tag = On
這個的作用是決定是否允許使用PHP代碼開始的标志的縮寫形式(<??>)。如果禁用了,必須使用PHP代碼開始标志的完整形式( <?php?> )。
也會影響到縮寫形式
<?=
,它和
<? echo
等價。使用此縮寫需要
short open tag
的值為On。從PHP 5.4.0起,
<?=
總是可用的。
安全模式
安全模式下執行程式主目錄
safe_mode_exec_dir = /var/www/html
system和其他執行函數将拒不執行這個目錄中的程式
禁用類/函數
disable_classes = , disable_functions =
逗号分隔的函數名清單作為參數,隻能設定在php.ini中。
上傳檔案及目錄權限
設定上傳及最大上傳檔案大小:
file_uploads = on
upload_max_filesize = 8M
檔案上傳臨時目錄:
上傳臨時檔案儲存的目錄,需要可寫,如果不設定,則采用系統臨時目錄 .例 : (/tmp, C:\Windows\Temp)
使用者通路目錄限制:
使用open_basedir能控制php腳本通路指定的目錄,能夠避免php腳本通路不該通路的目錄,一般設定為隻能通路目前目錄,這有效防止php木馬跨站運作.
錯誤資訊
錯誤資訊控制
display_error = On
一定一定一定要設定為off,把錯誤資訊輸出給攻擊者,你的站不被打誰被打
當然調試的使用要用On,不然看不到錯誤資訊.
設定錯誤報告的級别
作用是将錯誤級别設定為最高,顯示所有的問題。
錯誤日志
錯誤日志的位置,必須對web使用者可寫入,如果不定義則預設寫入到web伺服器的錯誤日志中去。
log_errors = on
将錯誤的日志輸入到檔案,而不是直接輸出到前端。
錯誤日志關聯資訊的最大長度,設為0表示無限長度。