shmop扩展在XAMPP中已内置,只需编辑phpinfo()显示的真实php.ini文件,取消extension=shmop前的分号并重启Apache即可启用;切勿加引号、路径或.dll后缀,且Windows下仅适用于本地调试。
shmop 扩展在 XAMPP 中默认未启用,但无需额外下载 DLL 文件——它已随 PHP 编译进核心,只需在正确的中取消注释即可生效。
确认你改的是真实生效的 php.ini
很多人改完
重启 Apache 后
仍报错“function not found”,根本原因是改错了文件。XAMPP 控制面板里“Config → PHP”打开的
往往只是模板,不是实际加载的那个。
在
下建一个
,内容为
浏览器访问
,搜索
路径类似
或
(取决于你是否用了 PHP Switcher)
就编辑这个路径下的文件,别碰其他同名文件
启用 shmop 扩展的正确写法
是 PHP 内置扩展,Windows 下对应模块名为
,但配置时**不能写全名**,也不能加路径或
后缀——否则 Apache 启动会报
。
用文本编辑器打开上一步确认的真实
搜索
,找到这一行:
删掉开头的分号,改为:
注意:不是
,也不是
(引号会失效)
保存后,必须在 XAMPP 控制面板中
完全停止再启动 Apache
(仅刷新页面无效)
验证 shmop 是否可用 + 常见报错原因
启用后运行一段测试代码,比如:
如果仍失败,优先排查:
→ 检查
路径和拼写,确认没多加引号或后缀
→
第二个参数必须是单字节字符(如
),不能是字符串或数字
→ 权限
在 Windows 下基本无意义,可暂换为
测试
使用
扩展?不用管它——
是现代替代方案,XAMPP 不带
,也不需要开启
真正容易被忽略的点:Windows 对共享内存支持有限,
在 XAMPP 中能跑通不代表生产环境可靠;跨进程通信更推荐 Redis 或文件锁,
仅适合本地调试或极轻量场景。
php.iniphp.inishmop_open()php.inihtdocsinfo.phphttp://localhost/info.phpLoaded Configuration FileC:\xampp\php\php.iniC:\xampp\php\php-8.3\php.inishmopphp_shmop.dll.dllUnable to load dynamic library 'php_shmop.dll'php.inishmop;extension=shmopextension=shmopextension=php_shmop.dllextension="shmop"PHP Warning: PHP Startup: Unable to load dynamic library 'shmop'php.iniftok(): unable to create keyftok()'t'shmop_open(): unable to attach or create shared memory segment06440666sysvshmshmopsysvshmshmopshmop