Swoole php 模块:未定义符号:spl_ce_Countable 问题
我试图在我的计算机上安装 swoole
首先:
pecl install swoole
然后我需要一个 php 模块
cd swoole
phpize
./configure
make
sudo make install
该脚本在我的文件夹中创建了一个 swoole.so,因此我将它添加到我的 php.ini 中:
extension=/usr/lib/php/20151012/swoole.so
当我尝试 php -v 时,我得到了:
PHP 警告:PHP 启动:无法加载动态库“/usr/lib/php/20151012/swoole.so”(尝试:/usr/lib/php/20151012/swoole.so(/usr/lib/php/20151012/swoole.so: 未定义符号:spl_ce_Countable ), /usr/lib/php/20170718//usr/lib/php/20151012/swoole.so.so (/usr/lib/php/20170718//usr/lib/php/20151012/swoole.so.so: 无法打开共享对象文件:没有此文件或目录)) 位于 Unknown 的第 0 行 PHP 7.2.13-1+ubuntu16.04.1+deb.sury.org+1 (cli) (构建时间:2018 年 12 月 7 日 08:07:08) ( NTS ) 版权所有 (c) 1997-2018 The PHP Group Zend Engine v3.2.0,版权所有 (c) 1998-2018 Zend Technologies 带有 Zend OPcache v7.2.13-1+ubuntu16.04.1+deb.sury.org+1,版权所有 (c) 1999-2018,作者 Zend Technologies 带有 Xdebug v2.6.1,版权所有 (c) 2002-2018,作者 Derick Rethans
这个错误是什么:未定义符号:spl_ce_Countable?
非常感谢。
大多数情况下,当您尝试加载依赖于其他尚未加载或未启用的扩展的扩展时,会抛出此类错误。因此,建议通过
phpenmod
加载它。一些 Linux 发行版(如 Debian 或 Ubuntu)使用 PHP
mods-available
来加载 PHP 扩展。
您可以在以下目录
/etc/php/<PHP_VERSION>/mods-available
中手动创建一个扩展名文件(如
openswoole.ini
),其中包含以下数据
; Configuration for Open Swoole
; priority=30
extension=openswoole
或者您可以运行以下命令,记得将
<PHP_VERSION>
更改为您的 php 版本
sudo bash -c "cat > /etc/php/<PHP_VERSION>/mods-available/openswoole.ini << EOF
; Configuration for Open Swoole
; priority=30
extension=openswoole
EOF"
sudo phpenmod -s cli openswoole
php -m | grep openswoole
我的机器上安装了多个 php 版本。但版本 7.2 没有 php-config 文件。
sudo apt-get install php7.2-dev
这解决了我的问题
感谢 @Álvaro González
我遇到了同样的问题,所以请仔细阅读。
如果 php 模块是从 mods-available 文件夹加载的,请不要手动将
extension=swoole.so
添加到 php.ini,而是必须将
swoole.ini
文件添加到 php mods-available 文件夹。
;configuration for php common module
;priority=20
extension=swoole.so
并使用
sudo phpenmod swoole
启用它>
如果您手动将 extension=swoole.so 添加到 php.ini,它会在所有必需的扩展之前连接。 例如,如果你在 swoole 安装中添加了 --enable-sockets 等,并且 swoole 扩展在 sockets 扩展之前加载,则它将失败,因此,我从 php.ini 中删除 extension=swoole.so,将 swoole.ini 文件添加到 php mods-available 文件夹并使用 sudo phpenmod swoole 启用它后,swoole 就可以正常工作了。
复制自: https://github.com/swoole/swoole-src/issues/3952#issuecomment-782765934