PHP5.3上的神奇引号不会消失

PHP5.3上的神奇引号不会消失,php,apache2,php-5.3,magic-quotes-gpc,Php,Apache2,Php 5.3,Magic Quotes Gpc,我有一个Ubuntu 10.04服务器,运行PHP 5.3.2,我在PHP.ini文件中设置了以下行: magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off 没有其他php.ini文件(我搜索了整个硬盘),我检查了所有apache2配置文件(包括整个硬盘上的所有.htaccess文件),它们没有在其他任何地方引用 然而: <?php ini_set('display_errors',

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

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

然而:

<?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    var_dump(get_magic_quotes_gpc());
?>
上述代码现在生成所需的结果:
int(0)
,并且不引用任何输出

所以问题是:为什么,哦,亲爱的上帝,为什么,魔法格言一开始就被打开了是的,我知道这个问题是有人问过的。我不是在寻找“快速修复”,是的,我知道在PHP5.4中将删除神奇的引号。但事实是,在5.4发布后的几年内(不同的客户端等),我需要保持向后兼容性,所以我试图弄清楚为什么会出现magic quotes。我知道我可以通过在root.htaccess文件中添加一行来解决这个问题(如我所示),但我更希望能够更好地理解我的php.ini设置最初是如何被覆盖的


那么,有人知道如何打开它吗?

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

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

也没有魔法。

如果它被设定了,它就被设定在某个地方

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


我最终解决了这个问题,在
/etc/php5/apache2/conf.d
文件夹的最后一个文件中应用了
magic\u quotes\u gpc=Off
行,因此似乎有什么东西覆盖了原始php.ini文件,但在最后一个包含的文件中再次应用设置实际上再次关闭了magic_quotes;更新apache2和php5:

apt-get update
apt-get install apache2 php5
这是apache2和/或php5中某些版本的错误。Debian的apt universe中的版本已经更新,因此只需更新即可解决问题。

这对我来说很有效:

我改变了:

; 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中工作)

加载的配置文件:
/etc/php5/apache2/php.ini
,扫描此目录以查找其他.ini文件:
/etc/php5/apache2/conf.d
,解析的其他.ini文件:
[…]。唯一设置它的地方是在主
/etc/php5/apache2/php.ini
文件中,在那里我将它们都设置为
off
?还是使用相同设置的多行?顺便说一句,它对主值有什么说明?文件中没有包含,并且没有具有相同设置的多行。至于主值,这很有趣:本地值显示为
off
,但主值显示为
on
——这是否意味着本地值被覆盖?主值从何而来?它实际上反映了您的设置:主值(php.ini one)不知何故处于打开状态,但是本地在.htaccess中被覆盖。我不仅重置了apache,而且重新启动了整个服务器(多次)。重置并不能修复它。至于Debian/Ubuntu的维护者,他们如何绕过apache和php配置文件?你是说这是由操作系统处理的?如果是这样的话,为什么.htaccess文件会绕过它,你能提供任何证据证明这就是正在发生的事情吗?哇,老兄,非常感谢你!终于救了我的命!为什么,为什么这个愚蠢的虫子。我搜索了所有。。。你的解决方案是唯一的!我的英雄!!!!谢谢!
; 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