核心原因是Swoole编译时php-config路径错误或未指定;需用find / -name php-config或which php-config定位真实路径,再以绝对路径执行./configure --with-php-config=/path/to/php-config,并确保phpize与目标PHP版本一致,最后在php.ini中添加extension=swoole并重启服务。

报 configure: error: Cannot find php-config,核心原因是 Swoole 编译时找不到或指错了 php-config 脚本。这不是缺文件,而是路径没对上——尤其在多 PHP 版本、非标准安装路径、或用宝塔等面板环境时最常见。
确认 php-config 真实位置
别猜路径,直接查:
-
find / -name php-config 2>/dev/null(全盘搜索,忽略权限错误) - 或更精准:
which php-config(如果已加入 PATH) - 再验证是否可用:
/path/to/php-config --version(比如/www/server/php/80/bin/php-config --version)
注意:输出应是 PHP 版本号,不是“command not found”或权限拒绝。
用绝对路径执行 configure
找到正确路径后,必须用完整绝对路径,不能只写目录或误写成 php:
立即学习“PHP免费学习笔记(深入)”;
- ❌ 错误:
./configure --with-php-config=/www/server/php/80/bin/php(结尾少-config) - ❌ 错误:
./configure --with-php-config=php-config(没写路径,系统找不到) - ✅ 正确:
./configure --with-php-config=/www/server/php/80/bin/php-config
如果你的 PHP 是源码编译安装的,路径通常是 /usr/local/php/bin/php-config;如果是宝塔,常见于 /www/server/php/xx/bin/php-config(xx 为版本号,如 74、80、82)。
确保 phpize 匹配当前 PHP
phpize 也要和目标 PHP 版本一致,否则生成的构建环境不兼容:
- 先查对应 phpize:
find / -name phpize 2>/dev/null - 用同一目录下的 phpize:
/www/server/php/80/bin/phpize(不是系统默认的/usr/bin/phpize) - 再运行 configure,避免 PHP 主版本或 ABI 不匹配导致后续 make 失败
装完别忘了启用扩展
make install 成功后,扩展文件(如 swoole.so)已放入 PHP 的 extension 目录,但还不会生效:
- 用
php --ini找到正在加载的php.ini文件路径 - 编辑该文件,在
[Dynamic Extensions]区域下添加一行:extension=swoole(Swoole ≥ 4.4 可省略.so) - 重启 PHP 服务(如 php-fpm)或 Web 服务器(Apache/Nginx),再执行
php -m | grep swoole验证



















