这几天 zblog 的一个问题让我很是受伤,每隔一段时间,12小时以上(没统计过)打开博客就会报错。

报错信息:(2)E_WARNING : Directive ‘ magic_quotes_gpc’ is deprecated in PHP 5.3 and greater (register_shutdown_function) (150101) (Linux; kangle3.4.8; PHP 5.3.3; mysql; curl);(2)E_WARNING : Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater (register_shutdown_function) (150101) (Linux; kangle3.4.8; PHP 5.3.3; mysql; curl);

然后我将 magic_quotes_gpc 和 safe_mode 百度了下,它们的作用就是自动帮你转义数据,提高了网站的安全性。但是php5.3已经不推荐使用这个函数,在php5.4的时候被废弃了,为的是让 PHP 开发者提高安全意识,而不是依赖这个函数。

知道原因了就好办了,在 php.ini 中修改成 off 就行了。

1
2
 magic_quotes_gpc = off;
 safe_mode = off;

如果是虚拟空间的话,则在 .htaccess 文件中禁用。

1
2
php_flag magic_quotes_gpc Off
php_flag safe_mode Off

我看了下 zblog 的源码,它是自定义了一个转义函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function _stripslashes(&$var) {
    if(is_array($var)) {
        foreach($var as $k=>&$v) {
            _stripslashes($v);
        }
    }else{
        $var = stripslashes($var);
    }
}

_stripslashes($_GET);
_stripslashes($_POST);
_stripslashes($_COOKIE);
_stripslashes($_REQUEST);

终于可以愉快的玩耍了~

这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。