; Safe Mode; http://php.net/safe-modesafe_mode=Off

php的安全模式供应一个基本安全的共享环境,在一个有多个用户帐户存在的php开放的web做事器上。

当一个web做事器上运行的php打开了安全模式,那么一些函数将被完备的禁止,并且会限定一些可用的功能。
在安全模式下,一些考试测验访问文件系统的函数功能将被限定。

当安全模式打开时,以下函数列表的功能将会受到限定:

phpsafemodeon说说php safemode Vue.js

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 所能打开的文件限定在指定的目录树,包括文件本身。
本指令不受安全模式打开或者关闭的影响。