swoole. 配置项必须写在 php 实际加载的主 php.ini 或 conf.d/.ini 中,且 extension=swoole.so(或 extension=swoole)须位于其之前;动态设置或非标准路径无效,需通过 ini_get() 验证运行时值。

php.ini 中的 swoole.* 配置项必须写在主 php.ini 或 conf.d/*.ini 里
PHP 不会从任意路径加载自定义 INI 文件,swoole.enable_coroutine 这类运行时配置项只在 PHP 启动阶段由 Swoole 扩展读取一次。如果你把它们写在 parse_ini_file() 解析的文件里,或通过 ini_set() 动态修改,完全无效 —— Swoole 在扩展初始化后就不再检查这些值。
必须确保配置项出现在 PHP 实际加载的 INI 链中:
- 用
php --ini查看 “Loaded Configuration File” 和 “Scan for additional .ini files in” 路径 - Linux 常见位置:
/etc/php/8.1/cli/php.ini(CLI)、/etc/php/8.1/fpm/conf.d/20-swoole.ini(FPM) - macOS(Homebrew):
/usr/local/etc/php/8.1/conf.d/ext-swoole.ini - Windows:
php.ini同级的php.d\目录下
推荐单独建 20-swoole.ini 放进 conf.d/,避免污染主配置文件。
extension=swoole.so 必须先于 swoole.* 配置项加载
顺序错误会导致配置被忽略 —— PHP 按 INI 文件字母顺序加载,但同一文件内顺序也关键。如果 swoole.* 出现在 extension=swoole.so 之前,Swoole 尚未注册配置处理器,这些行会被跳过。
正确写法(例如 /etc/php/8.1/cli/conf.d/20-swoole.ini):
extension=swoole swoole.enable_coroutine=On swoole.display_errors=Off swoole.socket_buffer_size=16M
注意:extension=swoole(不带 .so)在 PHP 8.0+ 可自动补全,更安全;老版本需写全 extension=swoole.so。
- 不能写成
extension="/path/to/swoole.so"—— 绝对路径易出错,且跨环境不可移植 - 不能把
swoole.*写在php.ini末尾却忘了加extension=swoole - CLI 和 FPM 使用不同 INI 文件,需分别确认并配置
验证配置是否生效不能只靠 php -m 或 phpinfo()
php -m | grep swoole 只说明扩展已加载,phpinfo() 里能看到 swoole 模块段落也不代表配置项起效。真正要验证的是运行时行为。
最直接的办法是写个脚本检查实际值:
<?php var_dump(ini_get('swoole.enable_coroutine'));
var_dump(ini_get('swoole.socket_buffer_size'));输出应为字符串 "1" 和 "16777216"(单位字节),而非 false 或空字符串。
- 若返回
false,说明该配置项根本没被加载(路径错、顺序错、拼写错) - 若返回旧值,说明有另一个 INI 文件覆盖了它(比如
99-custom.ini里又写了同名项) - CLI 下生效但 Web 不生效?大概率是 FPM 的
php.ini或conf.d/没配,不是“缓存”问题
Think-Swoole 等框架会覆盖部分 swoole.* 配置项
像 think-swoole 这类封装层,在启动时会调用 $server->set([...]) 覆盖 php.ini 中的值。例如它硬编码了 'max_request'=>0,即使你在 php.ini 里设了 swoole.max_request=100,也完全不起作用。
此时 php.ini 配置只是“摆设”,真正生效的是框架代码里的 set() 调用:
- 查源码确认哪些项被写死(如
max_request、enable_coroutine) - 改配置得走框架提供的机制,比如 Think-Swoole 的
swoole.init事件 - 不要试图在 php.ini 里强行覆盖,徒增排查成本
这类框架抽象越深,越容易让人误以为“配了 ini 就万事大吉”。实际得盯住它的 Server 初始化逻辑,而不是 php.ini 文件本身。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











