You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PHP 5.4.45服务器仍可运行eregi函数及无引号SESSION代码?

PHP 5.4版本兼容问题解析

1. eregi函数警告差异问题

  • 原因:eregi()在PHP 5.3.0被标记为弃用,但并未直接从PHP 5.4版本中移除,是否触发警告完全由error_reporting配置决定。服务器的PHP 5.4.45大概率关闭了E_DEPRECATED错误级别,所以运行时不会弹出警告;而本地PHP 5.4.25的error_reporting包含了E_DEPRECATED,因此会触发弃用提示。
  • 解决:直接替换为preg_match(),注意eregi()是不区分大小写匹配,所以preg_match()要加上/i修饰符,示例:
    原代码:eregi('test', $content)
    替换后:preg_match('/test/i', $content)

2. $_SESSION数组键无引号的报错问题

  • 原因:PHP中未加引号的数组键(如$_SESSION[newsession])会被优先解析为常量,找不到对应常量时才会降级当作字符串处理。本地环境的error_reporting开启了E_NOTICE级别,会抛出“Undefined constant newsession”的警告;服务器环境可能关闭了该级别,所以不会报错。这种写法本身属于不规范语法,PHP 7+版本会直接报错。
  • 解决:严格给数组键添加单引号或双引号,规范写法为$_SESSION['newsession']或$_SESSION["newsession"]。

内容的提问来源于stack exchange,提问作者ที ที

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:45:38