php 5.3上的magic_quotes不会消失

时间:2012-03-06 06:54:46

标签: php apache2 php-5.3 magic-quotes-gpc

我有一个运行PHP 5.3.2的Ubuntu 10.04服务器,我在php.ini文件中设置了这些行:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

没有其他php.ini文件(我搜索了整个硬盘),我检查了所有apache2配置文件(包括整个硬盘上的所有.htaccess文件),并且它们未被引用任何地方 else。

然而:

<?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    var_dump(get_magic_quotes_gpc());
?>

生成此输出:int(1)也就是说,魔术引号已打开,可通过添加带引号的任何类型的请求轻松验证,并且它们将被引用。 我已通过在根目录.htaccess文件中添加以下内容来解决此问题:

php_flag magic_quotes_gpc Off

上述代码现在产生了所需的结果:int(0),并且没有引用输出。

所以问题:为什么,亲爱的上帝,为什么,首先是神奇的引用?!是的,我知道这个问题是similar to others被问到的。我不是在寻找“快速修复”,是的,我知道魔法引用将在php 5.4中删除。但事实是,我需要在5.4出现(不同的客户等)后几年保持向后兼容性,所以我试图弄清楚为什么魔术引号会出现。我知道我可以通过在我的根.htaccess文件中添加一行来解决这个问题(正如我所示),但我更愿意更好地了解我的php.ini设置是如何被覆盖的。

那么有没有人对如何开启它有任何想法?

4 个答案:

答案 0 :(得分:1)

我今天遇到了同样的问题,发现了这个问题,但没有明显的解决方案!

我终于通过在magic_quotes_gpc = Off文件夹中的最后一个文件中应用/etc/php5/apache2/conf.d行来解决了这个问题,所以看起来有些东西覆盖了原来的php.ini文件,但再次应用了该设置在最后一个包含的文件中,实际上再次关闭了magic_quotes。

答案 1 :(得分:1)

我终于明白了;更新apache2和php5:

apt-get update
apt-get install apache2 php5

这是apache2和/或php5中某些版本的错误。 Debian的apt Universe中的版本已经更新,所以只需更新即可解决问题。

答案 2 :(得分:0)

在它的顶部输出PHPinfo()告诉你实际使用的php.ini文件。

  

没有其他php.ini文件(我搜索了整个硬盘),我检查了所有apache2配置文件(包括整个硬盘上的所有.htaccess文件),并且它们在其他任何地方都没有被引用。

也没有魔力 如果它已经设置 - 它被设置在某个地方。

答案 3 :(得分:0)

这对我有用:

我改变了:

; Magic quotes
;


; Use Sybase-style magic quotes (escape ' with '' instead of \').
  magic_quotes_sybase = 0
  magic_quotes_gpc = 0
  magic_quotes_runtime = 0

为:

; Magic quotes
;


; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = 0
magic_quotes_gpc = 0
magic_quotes_runtime = 0

在设置之前有空格,浪费了几个小时的时间来搜索magic_quotes的每个实例,以及每个php.ini文件或任何.ini文件。

(我在drush.ini的.drush目录中这样做了,但它可能在php.ini中有效)