2012-03-06 49 views
1

我有一个Ubuntu 10.04服务器,运行PHP 5.3.2,我已经在我的php.ini文件中设置这些行:magic_quotes的不会消失

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(1)也就是说,魔术引号都在,这是通过将任何类型的带引号的要求容易核查,它们将被报出来。 我已通过添加以下到我的根.htaccess文件固定此:

php_flag magic_quotes_gpc Off 

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

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

那么,有没有人有任何想法如何可以打开?

+0

我重置不仅阿帕奇,但重新启动整个服务器(多次)。重置不会修复它。至于Debian/Ubuntu维护者,他们如何解决apache和php配置文件?你是说这是由操作系统处理的东西吗?如果是这样,为什么.htaccess文件绕过它,你能提供任何证据这就是发生了什么? – cegfault 2012-03-06 09:25:51

回答

1

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

apt-get update 
apt-get install apache2 php5 

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

0

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

没有其他的php.ini文件(我找遍了整个硬盘驱动器),我检查了所有的Apache2配置文件(包括整个硬盘上的所有.htaccess文件),并且他们没有其他地方引用。

也没有魔法。
如果它被设置 - 它被设置在某处。

+0

加载配置文件:'/ etc/php5/apache2/php.ini',扫描该目录以获取其他.ini文件:'/ etc/php5/apache2/conf.d',附加.ini文件解析:'[.. ....]'检查他们所有。只设置它的**位置在主要的'/ etc/php5/apache2/php.ini'文件中,我已经将它们全部设置为'off'。 – cegfault 2012-03-06 09:24:59

+0

一个狂猜:可能是这个文件里有一些包含吗?或具有相同设置的多行?顺便说一句,关于主值的说法是什么? – 2012-03-06 09:39:14

+0

不包含在文件中,并且没有多行具有相同的设置。至于主值,这很有趣:本地值显示为“off”,但主值为“on” - 是否意味着本地值被覆盖? – cegfault 2012-03-06 09:41:03

1

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

我终于也通过应用magic_quotes_gpc = Off线在/etc/php5/apache2/conf.d文件夹中的最后一个文件解决了这个问题,因此它似乎事情是覆盖原来的php.ini文件,但应用的设置再次在最后包含的文件实际上变成magic_quotes再次退出。

+1

哇,男人谢谢soooooooooooooooooooo了!终于救了我的命!为什么,为什么这个愚蠢的错误。我搜索了所有......你的解决方案是唯一的解决方案!我的英雄!!!!谢谢! – systrue 2012-05-29 09:23:53

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