我有一个运行 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 文件),并且在其他任何地方都没有引用它们。
然而:
<?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)
,并且没有引用输出。
所以问题是:为什么,哦,天哪,为什么,魔术语录一开始就出现了?! 是的,我知道这个问题与其他被问到的问题相似。我不是在寻找“快速修复”,是的,我知道魔术引号将在 php 5.4 中删除。但事实是,在 5.4 发布后(不同的客户端等),我需要在几年内保持向后兼容性,所以我试图弄清楚为什么会出现魔术引号。我知道我可以通过在我的根 .htaccess 文件中添加一行来解决这个问题(如我所展示的那样),但我更希望更深入地了解我的 php.ini 设置是如何被覆盖的。
那么有没有人对如何打开它有任何想法?