php redis 模块与 php 编译不匹配

问题描述 投票:0回答:1

我正在尝试通过 pecl 安装 php-redis。

运行这个:

php -i | grep API

给出了这个:

PHP API => 20220829

然后我运行

pecl install redis
并收到消息:

...
running: phpize
Configuring for:
PHP Api Version:         20220829
Zend Module Api No:      20220829
Zend Extension Api No:   420220829
...
Build process completed successfully
Installing '/usr/lib/php/20230831/redis.so'
install ok: channel://pecl.php.net/redis-6.0.2
Extension redis enabled in php.ini

如您所见,api 之间存在不匹配。

当我使用

php -i | grep redis
检查 php 时,我收到此错误消息:

PHP Warning:  PHP Startup: redis: Unable to initialize module
Module compiled with module API=20230831
PHP    compiled with module API=20220829
These options need to match
 in Unknown on line 0

我使用的是 php8.2,所以 api 20220829 是正确的。

我的问题是,如何为 api 20220829 安装 redis 以匹配我的 php 版本。

php redis phpredis
1个回答
0
投票

您安装了多个版本的 PHP。

20230831
适用于 PHP 8.3。

% php -v
PHP 8.3.10 (cli) (built: Aug  2 2024 15:31:39) (NTS)
Copyright (c) The PHP Group

% php -i | grep API
PHP API => 20230831

您可能会

php
指向一个版本,而
php-config
则指向另一个版本。您可以通过运行
php-config
来验证这一点,以确保它与
php
输出匹配:

% php-config
Options:
  --extension-dir     [/usr/lib/php/20230831]
  --phpapi            [20230831]
  --version           [8.3.10]

要纠正,您必须运行所有 php 实用程序的替代方案,而不仅仅是 php 本身。我在我的

.bashrc
:

中使用一些别名来简化它
alias php74='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}7.4; done"'
alias php80='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}8.0; done"'
alias php81='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}8.1; done"'
alias php82='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}8.2; done"'
alias php83='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}8.3; done"'
alias php84='sudo -- sh -c "for P in php php-config phpize phar phar.phar; do update-alternatives --set \$P /usr/bin/\${P}8.4; done"'

然后我只需输入

php82
将所有内容切换到 v8.2 等

© www.soinside.com 2019 - 2024. All rights reserved.