我想关闭PHP的魔术引号。我无权访问php.ini。
当我尝试添加php_flag magic_quotes_gpc off到.htaccess文件时,出现500个内部服务器错误。这是我的.htaccess文件的样子:
php_flag magic_quotes_gpc off
AddType x-mapp-php5 .php php_flag magic_quotes_gpc off
然后我尝试使用ini_set('magic_quotes_gpc', 'O'),但这没有任何效果。
ini_set('magic_quotes_gpc', 'O')
如何关闭魔术引号?
按照手册,您通常可以在共享主机上安装自定义php.ini,其中未使用mod_php,php_value因此该指令会导致错误。对于suexec/ FastCGI设置,php.ini在任何情况下都有每个Web空间是很常见的。
php_value
php.ini
-
我认为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())
PHP_INI_PERDIR
ini_set()
PHP_INI_ALL
这意味着您必须使用.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 ); }