Standard扩展是PHP内置核心扩展,无需且不能通过extension=standard启用;其功能(如basename、array_merge)正常即表明已就绪,常见问题实为extension_dir路径错误或依赖扩展缺失所致。
phpEnv 默认不自动启用 Standard 扩展,它其实是 PHP 内置核心扩展之一,但需确认对应 PHP 版本是否已编译进内核或以动态模块加载 —— 你不能用这种写法,它根本不存在独立的文件。
Standard 扩展不是独立 DLL/SO 文件
PHP 的
扩展是“内置扩展(built-in)”,和
、
、
等一样,代码直接编译进 PHP 二进制中,没有单独的
配置项。你在
里看到的 “standard” 模块,是运行时自动注册的,无需手动开启。
执行
通常无输出(正常现象),不代表缺失
调用
、
、
等函数能正常工作,就说明
功能已就绪
试图在
中写
会导致启动报错:
phpEnv 中真正要检查的是 extension_dir 和依赖路径
虽然
不用配,但 phpEnv 切换版本后,常见问题实际出在其他关联扩展或路径上,导致你以为 “standard 功能异常”:
必须指向当前 PHP 版本真实的
目录,例如:
(Windows)或
(Linux/macOS)
若你手动启用了
、
、
等扩展,而它们依赖的 DLL 或 SO 文件缺失(如 Windows 下缺
、
),PHP 启动会失败,连带让
相关函数(如
)不可用
phpEnv 安装的某些 Windows 预编译包(尤其来自 phpenv.cn 的 GUI 版)可能默认禁用部分扩展;需打开对应 PHP 版本目录下的
,取消注释如
→
验证 Standard 功能是否真正常
别只看
有没有 “standard” 标题栏,重点测行为:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
运行
—— 应输出
运行
—— 应输出
若报
,大概率是 PHP 二进制损坏,或你正运行的是 CLI 版本却误改了 Web SAPI 的
(反之亦然)
Windows 下特别注意:CLI 和 Apache/IIS 加载的不是同一个
,可用
查看 CLI 实际加载路径,
页面查看 Web 端路径
真正容易被忽略的点:phpEnv 切换版本后,
不会自动同步更新 —— 旧版本的 ini 文件可能残留错误的
或废弃扩展配置,导致看似“standard 失效”,实则是加载过程卡在前置依赖上。
extension=standardstandard.sostandardcoredatejsonextension=phpinfo()php -m | grep standardbasename()parse_url()str_replace()standardphp.iniextension=standardPHP Warning: Cannot load module 'standard' because conflicting dependenciesstandardextension_dirext/extension_dir = "C:/phpenv/php/php-8.2.12-Win32-vs16-x64/ext"extension_dir = "/home/user/.phpenv/versions/8.2.12/lib/php/extensions/no-debug-zts-20220829"mbstringiconvcurllibssh2.dllssleay32.dllstandardfile_get_contents()php.ini;extension=mbstringextension=mbstringphpinfo()php -r "echo basename('/path/to/file.txt');"file.txtphp -r "var_dump(function_exists('array_merge'));"bool(true)Fatal error: Uncaught Error: Call to undefined function ...php.iniphp.iniphp --iniphpinfo()php.iniextension_dir