Deprecated: Function set_magic_quotes_runtime() is deprecated

本文介绍了解决PHP中因使用废弃函数set_magic_quotes_runtime而导致的问题的方法。该函数已在PHP5.3之后被移除,文章提供了如何通过配置文件或代码调整来规避此问题的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导致这个提示的原因是在PHP5.3后此特性(set_magic_quotes_runtime())已经关闭。
而且在PHP6中已经完全移除此特性。
你可以注释或者删除掉出错的行,或者是在set_magic_quotes_runtime()前面加@符号。

也可以改配置文件为

;error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

 

set_magic_quotes_runtime(0)函数作用解释
在php.ini的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。

当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。

为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测设置状态秋决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'"/加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(/)与 NUL(NULL 字符)。

### 解决 PHP 中 `get_magic_quotes_gpc` 函数已废弃的警告 自 PHP 5.4.0 起,`get_magic_quotes_gpc()` 已被标记为弃用,在更高版本中甚至可能完全移除该函数。为了处理此问题并消除警告消息,可以采用以下方法来替代原有的功能。 #### 方法一:检测 magic quotes 并手动取消转义 如果应用程序仍然依赖于 `magic_quotes_gpc` 的行为,则可以在早期阶段检查其状态,并通过代码显式地去除任何自动添加的反斜杠: ```php if (!function_exists('get_magic_quotes_gpc') || !get_magic_quotes_gpc()) { // 如果未启用 magic_quotes_gpc 或者函数不存在则无需操作 } else { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } ``` 这段代码会遍历所有的输入数据结构(如 POST、GET 和 COOKIE),并对其中的内容执行 `stripslashes()` 来删除多余的反斜杠[^1]。 #### 方法二:更新应用逻辑不再依赖 magic quotes 最佳实践是重构应用程序以不依赖于 `magic_quotes_gpc` 提供的安全特性。现代 Web 应用程序应该始终使用预处理语句或其他安全机制来防止 SQL 注入攻击,而不是依靠服务器配置中的全局设置。对于 HTML 输出,应当仅在实际渲染到页面之前调用 `htmlspecialchars()` 等编码函数。 因此建议修改业务逻辑部分,确保所有数据库查询都经过适当准备,并且只在必要时对输出进行适当的实体化转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值