sudo pecl install swoole可解决权限问题,但关键在于路径对齐:需确认phpize、php-config和php.ini三者路径一致,且CLI与Web服务器的php.ini均正确配置extension=swoole并重启对应服务。

直接用 sudo 执行安装命令就能解决,但关键不是“加不加 sudo”,而是加在哪、加给谁——多数报错其实不是权限问题,而是路径或用户身份错位。
pecl install swoole 报 Permission denied
这是最常见场景:你运行了 pecl install swoole,终端提示 Permission denied 或写入 /usr/lib/php/20200930/ 失败。
- 根本原因:PECL 默认尝试把
swoole.so写进系统级扩展目录(如/usr/lib/php/20200930/),普通用户没写权限 - 正确做法:在命令前加
sudo,即sudo pecl install swoole—— 不要只对后续某一步加 sudo - 别漏依赖:Ubuntu 上必须先装
php-dev和pkg-php-tools,否则phpize都找不到,sudo apt install php-dev pkg-php-tools
源码编译时 make install 失败
手动编译 Swoole 时,make install 报错 mkdir: cannot create directory ... Permission denied。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
- 这不是“sudo 少打一个”,而是当前用户没被加入
sudo组:运行groups看输出里有没有sudo;没有就执行sudo usermod -aG sudo $USER,然后重新登录终端 -
make install默认往/usr/lib/php/写,但宝塔或自编译 PHP 可能装在/www/server/php/80/这类路径 —— 此时不能硬加 sudo,而要先确认./configure --with-php-config=指向的路径是否正确,否则 sudo 也装错地方 - 如果已确认路径无误,仍失败,检查目标目录父级是否可写:
ls -ld /usr/lib/php/20200930/,若属主不是 root 或权限不包含w,才需sudo chown root:root /usr/lib/php/20200930
装完 php -m 看不到 swoole
明明 sudo pecl install swoole 成功了,php -m | grep swoole 却没输出 —— 这不是权限问题,是配置没生效。
- PECL 安装后会提示你往
php.ini加extension=swoole(注意:不是swoole.so),但很多人改错了文件:运行php --ini看 “Loaded Configuration File” 路径,只改这个文件,别动 Apache/Nginx 的 php.ini - Ubuntu CLI 和 FPM 的
php.ini是两个文件,php -m查的是 CLI 的,Web 服务用的是 FPM 的 —— 如果只配了一个,就会出现“网页能用,命令行不能用”或反过来 - 加完配置后,Ubuntu 下要重启
php-fpm服务:sudo systemctl restart php8.0-fpm(版本号按实际调整),CLI 不用重启,但可用php --ri swoole验证
真正卡住人的从来不是“没权限”,而是以为加了 sudo 就万事大吉,结果装到 A 路径、配了 B 文件、验证用 C 环境。Ubuntu 下 Swoole 装不上,八成是三个路径没对齐:phpize 路径、php-config 路径、php.ini 路径。

















