答案是权限不足导致安装失败:需用sudo pecl install swoole或指定用户可写路径编译,确认extension_dir可写、php-config路径正确,并区分CLI/FPM的php.ini配置。

“permission denied”不是 Swoole 本身的问题,而是你在安装过程中对文件、目录或命令缺乏必要权限 —— 直接原因通常是没加 sudo、扩展目录不可写、或 php-config 路径指向了 root 权限外的 PHP 安装。
为什么 pecl install swoole 报 permission denied
常见于 Ubuntu/Debian 或 CentOS 上用 pecl install swoole 时卡在编译或复制 swoole.so 阶段。本质是:pecl 默认尝试把扩展文件写入系统级 extension_dir(如 /usr/lib/php/20220829/),而普通用户无权写入。
- 运行
php -i | grep extension_dir查出真实路径,再ls -ld $(php -r "echo extension_dir;")看属主和权限 - 若输出中显示
drwxr-xr-x 1 root root,说明目录归 root 所有,你必须用sudo pecl install swoole,而不是仅pecl install swoole - 别跳过
sudo直接改目录权限(比如chmod 777),这会破坏 PHP 扩展加载安全机制
make install 时提示 “cannot create regular file … Permission denied”
手动编译源码(./configure && make && make install)失败,多数因为 make install 默认往 /usr/lib/php/ 写文件,但该路径受保护。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
- 先确认
php-config路径是否正确:which php-config;若返回空,说明没装php-dev包(Ubuntu)或php-devel(CentOS) - 执行
./configure --with-php-config=/usr/bin/php-config后,make install仍报错?加sudo make install - 更稳妥的做法是指定安装到用户可写路径:
./configure --prefix=$HOME/swoole --with-php-config=/usr/bin/php-config,然后make && make install不需要 sudo,最后手动把$HOME/swoole/lib/php/extensions/no-debug-non-zts-20220829/swoole.so复制到真实extension_dir并确保php.ini中extension=swoole.so生效
php -m 看不到 swoole,但安装过程没报错
这往往不是权限问题,而是「安装成功」和「PHP 加载成功」被混淆了。尤其当你用 sudo pecl install,却忘了检查 CLI 和 FPM 是否共用同一份 php.ini。
- 运行
php --ini,看 “Loaded Configuration File” 路径;如果是/etc/php/8.2/cli/php.ini,FPM 可能用的是/etc/php/8.2/fpm/php.ini—— 两个都要加extension=swoole.so - 确认
swoole.so文件真实存在:ls -l $(php -r "echo extension_dir;")/swoole.so;如果报 “No such file”,说明make install没写对位置,或pecl安装中途被中断 - 某些集成环境(如 MAMP、XAMPP)自带 PHP,其
pecl在非标准路径(如/Applications/MAMP/bin/php/php8.2.8/bin/pecl),用系统级pecl安装的扩展对它完全无效
最易被忽略的一点:权限错误常和 PHP 版本混用叠加发生 —— 比如你用系统 PHP 8.2 的 phpize 编译,却拿它去加载 PHP 8.1 的 php-fpm,此时即使 swoole.so 权限全对,也会因 ABI 不匹配静默失败,连错误都不报。务必用 php-config 和 phpize 的绝对路径做校验,别依赖 PATH 查找。

















