我有一个运行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设置是如何被覆盖的。
那么有没有人对如何开启它有任何想法?
答案 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中有效)