-
safe_mode
boolean
-
是否启用 PHP 的安全模式。
-
safe_mode_gid
boolean
-
默认情况下,安全模式在打开文件时会做 UID 比较检查。如果想将其放宽到
GID 比较,则打开 safe_mode_gid。是否在文件访问时使用
UID(FALSE)或者
GID(TRUE)来做检查。
-
safe_mode_include_dir
string
-
当从此目录及其子目录(目录必须在 include_path
中或者用完整路径来包含)包含文件时越过
UID/GID 检查。
从 PHP 4.2.0 开始,本指令可以接受和 include_path
指令类似的风格用冒号(Windows 中是分号)隔开的路径,而不只是一个目录。
指定的限制实际上是一个前缀,而非一个目录名。这也就是说“safe_mode_include_dir
= /dir/incl”将允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。如果希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线,例如:“safe_mode_include_dir
= /dir/incl/”。
如果本指令的值为空,在 PHP 4.2.3 中以及 PHP 4.3.3 起具有不同
UID/GID
的文件将不能被包含。在较早版本中,所有文件都能被包含。
-
safe_mode_exec_dir
string
-
如果 PHP 使用了安全模式,system() 和其它程序执行函数将拒绝启动不在此目录中的程序。必须使用
/ 作为目录分隔符,包括 Windows 中。
-
safe_mode_allowed_env_vars
string
-
设置某些环境变量可能是潜在的安全缺口。本指令包含有一个逗号分隔的前缀列表。在安全模式下,用户只能改变那些名字具有在这里提供的前缀的环境变量。默认情况下,用户只能设置以
PHP_ 开头的环境变量(例如 PHP_FOO = BAR)。
Note:
如果本指令为空,PHP 将使用户可以修改任何环境变量!
-
safe_mode_protected_env_vars
string
-
本指令包含有一个逗号分隔的环境变量的列表,最终用户不能用
putenv() 来改变这些环境变量。甚至在
safe_mode_allowed_env_vars 中设置了允许修改时也不能改变这些变量。
-
open_basedir
string
-
将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。
当一个脚本试图用例如 fopen() 或者 gzopen()
打开一个文件时,该文件的位置将被检查。当文件在指定的目录树之外时
PHP 将拒绝打开它。所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
特殊值 .
指明脚本的工作目录将被作为基准目录。但这有些危险,因为脚本的工作目录可以轻易被
chdir() 而改变。
在 httpd.conf 文件中中,open_basedir
可以像其它任何配置选项一样用“php_admin_value open_basedir none”的方法关闭(例如某些虚拟主机中)。
在 Windows 中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为
Apache 模块时,父目录中的 open_basedir 路径自动被继承。
用 open_basedir 指定的限制实际上是前缀,不是目录名。也就是说“open_basedir
= /dir/incl”也会允许访问“/dir/include”和“/dir/incls”,如果它们存在的话。如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:“open_basedir
= /dir/incl/”。
Note:
支持多个目录是 3.0.7 加入的。
默认是允许打开所有文件。
-
disable_functions
string
-
本指令允许你基于安全原因禁止某些函数。接受逗号分隔的函数名列表作为参数。
disable_functions 不受安全模式的影响。
本指令只能设置在 php.ini 中。例如不能将其设置在 httpd.conf。
-
disable_classes
string
-
本指令可以使你出于安全的理由禁用某些类。用逗号分隔类名。disable_classes
不受安全模式的影响。
本指令只能设置在 php.ini 中。例如不能将其设置在 httpd.conf。
Note:
可用性说明
本指令自 PHP 4.3.2 起可用。
-rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
<?php
readfile('/etc/passwd');
?>
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
<Directory /docroot>
php_admin_value open_basedir /docroot
</Directory>
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2
disable_functions readfile,system
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2