GRPC 在 ubuntu 上安装成功,但 php 正在另一个文件夹中查找它

Lew*_*ith 5 php ubuntu grpc ubuntu-20.04

使用 PHP 7.4 和 Ubuntu 20.04 LTS

我已经使用以下步骤安装了 GRPC:

sudo apt-get install autoconf zlib1g-dev php-dev php-pear
sudo pecl install grpc
Run Code Online (Sandbox Code Playgroud)

cli然后我将以下行添加到显示的文件夹中fpm

extension=grpc.so
/etc/php/7.4/cli/php.ini
/etc/php/7.4/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)

当我运行时,php出现以下错误:

PHP Warning:  PHP Startup: Unable to load dynamic library 'grpc.so' (tried: /usr/lib/php/20190902/grpc.so (/usr/lib/php/20190902/grpc.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/grpc.so.so (/usr/lib/php/20190902/grpc.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

安装后pecl输出已经安装在这里:

/usr/lib/php/20200930/grpc.so
Run Code Online (Sandbox Code Playgroud)

为了变得聪明,我想我可以将文件复制到 php 期望的位置:

sudo cp /usr/lib/php/20200930/grpc.so /usr/lib/php/20190902/grpc.so
Run Code Online (Sandbox Code Playgroud)

但是当你运行php后你会得到以下信息:

PHP Warning:  PHP Startup: grpc: Unable to initialize module
Module compiled with module API=20200930
PHP    compiled with module API=20190902
These options need to match
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 5

使用以下命令安装

sudo pecl -d php_suffix=8.1 install grpc
Run Code Online (Sandbox Code Playgroud)

最初我有 php7.4 和 php8.1 版本。默认版本是 php8.1,并尝试安装相同的版本。但由于某种原因,它安装在错误的文件夹中(/usr/lib/php/20200930/grpc.so)。删除 php7.4 没有帮助。

安装特定于 php8.1 解决了这个问题。

确保删除所有以前的版本

sudo pecl uninstall grpc
Run Code Online (Sandbox Code Playgroud)