小编典典

如何在共享主机上关闭魔术引号?

php

我想关闭PHP的魔术引号。我无权访问php.ini。

当我尝试添加php_flag magic_quotes_gpc off到.htaccess文件时,出现500个内部服务器错误。这是我的.htaccess文件的样子:

AddType x-mapp-php5 .php
php_flag magic_quotes_gpc off

然后我尝试使用ini_set('magic_quotes_gpc', 'O'),但这没有任何效果。

如何关闭魔术引号?


阅读 219

收藏
2020-05-26

共1个答案

小编典典

按照手册,您通常可以在共享主机上安装自定义php.ini,其中未使用mod_php,php_value因此该指令会导致错误。对于suexec/ FastCGI设置,php.ini在任何情况下都有每个Web空间是很常见的。

-

我认为O(大写字母o)不是设置ini标志的有效值。您需要使用true / false,1/0或“ on” /“ off”值。

ini_set( 'magic_quotes_gpc', 0 );   // doesn't work

编辑

检查ini设置列表后,我看到magic_quotes_gpc是一个PHP_INI_PERDIR设置(在4.2.3之后),这意味着您不能使用来更改它ini_set()(只能使用PHP_INI_ALL来更改设置ini_set()

这意味着您必须使用.htaccess文件来执行此操作-或-实现脚本以反转魔术引号的效果。像这样

if ( in_array( strtolower( ini_get( 'magic_quotes_gpc' ) ), array( '1', 'on' ) ) )
{
    $_POST = array_map( 'stripslashes', $_POST );
    $_GET = array_map( 'stripslashes', $_GET );
    $_COOKIE = array_map( 'stripslashes', $_COOKIE );
}
2020-05-26