跳转到主内容
极星编程网:以代码为星,赴技术山海!

XAMPP如何开启shmop扩展 XAMPP共享内存函数支持

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

相关文章