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

如何在PHP内置开发服务器中正常加载使用Zend extension

问题核心原因

PHP 内置开发服务器采用 prefork 多进程架构:主进程仅负责端口监听、worker 进程调度,不会处理实际的业务请求;所有请求由 fork 出来的 worker 进程处理。
你通过命令行 -z 参数传递的 Zend 扩展加载指令,仅会在主进程启动阶段生效,worker 进程初始化时默认不会继承命令行传入的 -z 参数,只会读取 php.ini 中配置的扩展加载项,因此你在各个钩子中埋的日志逻辑都不会被触发。

解决方法

方法1:修改全局php.ini配置(最稳妥)

  1. 执行 php --ini 找到当前加载的 php.ini 绝对路径
  2. 在 php.ini 末尾添加一行配置:
zend_extension = /path/to/my/extension.so
  1. 执行 php -v 确认扩展加载成功后,直接启动内置服务器即可:
php -S localhost:8080 script.php

方法2:指定自定义ini文件(适合开发测试场景,不污染全局配置)

单独编写测试用的ini文件(例如 test_php.ini),仅需写入扩展加载配置:

zend_extension = /path/to/my/extension.so

启动服务器时通过 -c 参数指定自定义ini文件即可:

php -c /path/to/test_php.ini -S localhost:8080 script.php

方法3:通过-d参数动态指定配置(无需修改文件)

直接通过 -d 指令传递zend扩展加载配置,兼容性比 -z 参数更好,会被worker进程继承:

php -d zend_extension=/path/to/my/extension.so -S localhost:8080 script.php

验证方法

修改完配置后,先访问一次服务器地址,再检查你在钩子中定义的日志文件是否有写入,即可确认扩展是否正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:39:00