《說說php safe_mode》要點:
本文介紹了說說php safe_mode,希望對您有用。如果有疑問,可以聯系我們。
PHP平安模式就是以平安模式運行php,safe_mode是在php.ini中設置,默認是關閉的.
; Safe Mode; http://php.net/safe-modesafe_mode=Off
php的平安模式提供一個基本平安的共享環境,在一個有多個用戶帳戶存在的php開放的web服務器上.
當一個web服務器上運行的php打開了平安模式,那么一些函數將被完全的禁止,并且會限制一些可用的功能.在平安模式下,一些嘗試訪問文件系統的函數功能將被限制.
當平安模式打開時,以下函數列表的功能將會受到限制:
chdir, move_uploaded_file, chgrp, parse_ini_file, chown, rmdir, copy, rename, fopen, require, highlight_file, show_source, include, symlink, link, touch, mkdir, unlink
同樣的,一些php擴展中的函數也將會受到影響.(加載模塊:在平安模式下dl函數將被禁止,如果要加載擴展的話,只能修改php.ini中的擴展選項,在php啟動的時候加載)
safe_mode特性在5.3后不推薦使用,在5.4中刪除.
打開或者關閉php的平安模式,在php.ini文件中配置safe_mode選項:
safe_mode=On(使用平安模式)safe_mode=Off(關閉平安模式)
相關設置
1. 用戶組平安
safe_mode_gid = off
2. 平安模式下執行程序主目錄
safe_mode_exec_dir = D:/usr/www
3. 平安模式下包含文件
safe_mode_include_dir = D:/usr/www/include/
4. 關閉危險函數
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
5. 關閉PHP版本信息在http頭的泄漏
expose_php = Off
6. 關閉注冊全局變量
register_globals = Off
7. 打開magic_quotes_gpc來防止SQL注入
magic_quotes_gpc = On
8. 錯誤信息控制:默認關閉
display_errors = Off
如果要顯示錯誤信息,一定要設置顯示錯誤的級別,比如只顯示警告以上的信息:
`error_reporting = E_WARNING & E_ERROR
9. 錯誤日志:如果關閉錯誤消息,那么就要記錄錯誤日志
log_errors = On
同時也要設置錯誤日志存放的目錄,建議根apache的日志存在一起:
error_log = D:/usr/local/apache2/logs/php_error.log
10. 控制php腳本能訪問的目錄
open_basedir = D:/usr/www
注意:open_basedir并不是safe_mode的一個子功能,PHP官網中明確表示:
Limit the files that can be opened by PHP to the specified directory-tree, including the file itself. This directive is NOT affected by whether Safe Mode is turned On or Off.
即:將 PHP 所能打開的文件限制在指定的目錄樹,包括文件本身.本指令不受平安模式打開或者關閉的影響.
維易PHP培訓學院每天發布《說說php safe_mode》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。