如何替换在PHP中已弃用的set_magic_quotes_runtime函数?

72

当我尝试运行一个我必须使用但并没有编写的PHP脚本时,我得到了这个消息。

Deprecated: Function set_magic_quotes_runtime() is deprecated in /opt/lampp/htdocs/webEchange/SiteWeb_V5/inc/fpdf.php on line 1810

这是第1810行:

set_magic_quotes_runtime(0);

如果这个函数已经不再使用,我应该用什么替代它呢?

非常感谢!


12个回答

72
检查一下是否已经打开。这样可以消除警告,并确保如果您的代码在旧版本的PHP上运行,魔术引号确实已关闭。
除非您可以百分之百确定该代码永远不会在PHP 5.3之前的版本上运行,否则不要只是删除那行代码,就像其他人建议的那样。
<?php
// Check if magic_quotes_runtime is active
if(get_magic_quotes_runtime())
{
    // Deactivate
    set_magic_quotes_runtime(false);
}
?>

在PHP 5.3中,get_magic_quotes_runtime并没有被弃用。
来源:https://www.php.net/get_magic_quotes_runtime/

@stereofrog - 你确定吗?我没有测试过,但是get函数在文档中并没有显示,而set函数明显有。 - philfreo
在 PHP > 5.4 中,get 函数始终返回 false,但它尚未被弃用。 - mbomb007
6
不幸的是,PHP 7.4.0开始get_magic_quotes_runtime()已经被弃用,因此这种方法不再可行。 - worriorbg

33

我使用的是 FPDF 版本 1.53,并且不想升级以避免可能的副作用。根据 Yacoby 的建议,我使用了以下代码:

第 1164 行:

if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    $mqr=get_magic_quotes_runtime();
    set_magic_quotes_runtime(0);
}

第1203行:

if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    set_magic_quotes_runtime($mqr);
}

2
这确实是最佳解决方案。+1 - Dzhuneyt

14

由于 PHP v8 中默认关闭了 Magic Quotes 功能(同时已被移除),因此您可以直接从代码中删除该函数调用。


3
请看我对于“为什么这可能不是一个好主意”的回答(https://dev59.com/w3E95IYBdhLWcg3wp_kg#2218021)。 - philfreo

7
您不需要用任何东西替换它。设置magic_quotes_runtime在PHP6中已被移除,因此函数调用是不必要的。如果您想要保持向后兼容性,可以将其包装在if语句中,检查使用phpversionversion_compare进行版本比较。

1
并且为了用代码支持这一点:if(version_compare(PHP_VERSION, '5.3.0', '<')) set_magic_quotes_runtime(0); - Dzhuneyt

6
在 PHP 7 中,我们可以使用以下代码:
ini_set('magic_quotes_runtime', 0);

替代 set_magic_quotes_runtime(0);


6

升级到FPDF的1.6版本。


请注意,get_magic_quotes_runtime 直到 FPDF 版本 1.82 才被删除。 - Gregory Cosmo Haun

5

我通过注释掉那行代码来修复了我的问题,然后它正常工作了。

//if(get_magic_quotes_runtime())
//  @set_magic_quotes_runtime(0);

1
我也是这样做的。 - Chris Ngure
1
对我有用,你是个明星。 - Humphrey

5
ini_set('magic_quotes_runtime', 0)

我猜。


1
ini_set 的 magic_quotes_runtime 选项在 PHP 6.0.0 中也被移除了。 - Shawn

3
只需要在要设置的函数前添加前缀“@”,即可执行@set_magic_quotes_runtime(0)。该函数已不再支持php 5.4,不建议删除或禁用此功能。

2
将以下代码添加到您的脚本顶部以解决问题。
@set_magic_quotes_runtime(false);
ini_set('magic_quotes_runtime', 0);

这可能会引起什么问题?@符号会抑制错误。 - Radmation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接