Safe_mode是唯一PHP_INI_SYSTEM屬性,必須通過php.ini或httpd.conf來設(shè)置。要啟用Safe_mode,只需修改php.ini: safe_mode = On 或者修改httpd.conf,定義目錄:
Options FollowSymLinks php_admin_value safe_mode 1
被安全模式限制或屏蔽的函數(shù)
函數(shù)名 限制
dbmopen() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
dbase_open() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
filepro() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
filepro_rowcount() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
filepro_retrieve() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
ifx_* sql_safe_mode 限制, (!= safe mode)
ingres_* sql_safe_mode 限制, (!= safe mode)
mysql_* sql_safe_mode 限制, (!= safe mode)
pg_loimport() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
posix_mkfifo() 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
putenv() 遵循 ini 設(shè)置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 選項(xiàng)。請參考 putenv() 函數(shù)的有關(guān)文檔。
move_uploaded_file() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
chdir() 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
dl() 當(dāng) PHP 運(yùn)行在 安全模式 時(shí),不能使用此函數(shù)。
backtick operator 當(dāng) PHP 運(yùn)行在 安全模式 時(shí),不能使用此函數(shù)。
shell_exec()(在功能上和 backticks 函數(shù)相同) 當(dāng) PHP 運(yùn)行在 安全模式 時(shí),不能使用此函數(shù)。
exec() 只能在 safe_mode_exec_dir 設(shè)置的目錄下進(jìn)行執(zhí)行操作?;谀承┰?,目前不能在可執(zhí)行對象的路徑中使用 ..。escapeshellcmd() 將被作用于此函數(shù)的參數(shù)上。
system() 只能在 safe_mode_exec_dir 設(shè)置的目錄下進(jìn)行執(zhí)行操作?;谀承┰颍壳安荒茉诳蓤?zhí)行對象的路徑中使用 ..。escapeshellcmd() 將被作用于此函數(shù)的參數(shù)上。
passthru() 只能在 safe_mode_exec_dir 設(shè)置的目錄下進(jìn)行執(zhí)行操作。基于某些原因,目前不能在可執(zhí)行對象的路徑中使用 ..。escapeshellcmd() 將被作用于此函數(shù)的參數(shù)上。
popen() 只能在 safe_mode_exec_dir 設(shè)置的目錄下進(jìn)行執(zhí)行操作。基于某些原因,目前不能在可執(zhí)行對象的路徑中使用 ..。escapeshellcmd() 將被作用于此函數(shù)的參數(shù)上。
fopen() 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
mkdir() 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
rmdir() 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
rename() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
unlink() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
copy() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 (on source and target)
chgrp() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
chown() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
chmod() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 另外,不能設(shè)置 SUID、SGID 和 sticky bits
touch() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。
symlink() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 (注意:僅測試 target)
link() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 (注意:僅測試 target)
apache_request_headers() 在安全模式下,以“authorization”(區(qū)分大小寫)開頭的標(biāo)頭將不會(huì)被返回。
header() 在安全模式下,如果設(shè)置了 WWW-Authenticate,當(dāng)前腳本的 uid 將被添加到該標(biāo)頭的 realm 部分。
PHP_AUTH 變量 在安全模式下,變量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但無論如何,您仍然可以使用 REMOTE_USER 來獲取用戶名稱(USER)。(注意:僅 PHP 4.3.0 以后有效)
highlight_file(), show_source() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 (注意,僅在 4.2.1 版本后有效)
parse_ini_file() 檢查被操作的文件或目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與被執(zhí)行的腳本有相同的 UID(所有者)。 (注意,僅在 4.2.1 版本后有效)
set_time_limit() 在安全模式下不起作用。
max_execution_time 在安全模式下不起作用。
mail() 在安全模式下,第五個(gè)參數(shù)被屏蔽。(注意,僅自 PHP 4.2.3 起受影響)