服务器有 PHP 8.1、8.2、8.3 三个版本标准安装后使用以下命令
sudo apt install php-pear
sudo apt install php-dev
sudo pecl install xhprof
由于某种原因,我的模块是为 PHP8.2 安装的
我尝试通过指定 php8.3 的路径来更改 pecl 设置,如下所示
which php8.3
pecl config-set php_dir /usr/bin/php8.3
然后再试一次
sudo pecl install xhprof
但出现模块存在的错误
结果8.3下只能通过使用后缀才能安装
sudo apt install php8.3-dev
sudo pecl -d php_suffix=8.3 install xhprof; sudo pecl uninstall -r xhprof
但我不明白为什么当我打电话时在控制台中
php -m
或者
php8.3 -m
我没有看到 xhprof 模块!?
此外,在脚本中,在 phpinfo() 的输出中;我看到这个模块已连接(脚本在php8.3下运行)!
其中
sudo update-alternatives --config php
8.3 中发布 有 4 个 php 替代选项(提供 /usr/bin/php)。
Выбор Путь Приор Состояние
------------------------------------------------------------
0 /usr/bin/php.default 100 автоматический режим
1 /usr/bin/php.default 100 ручной режим
2 /usr/bin/php8.1 81 ручной режим
3 /usr/bin/php8.2 82 ручной режим
* 4 /usr/bin/php8.3 83 ручной режим
还有团队
php -v
显示
PHP 8.3.1 (cli) (built: Dec 21 2023 20:12:13) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies
with Zend OPcache v8.3.1, Copyright (c), by Zend Technologies
with Xdebug v3.3.0, Copyright (c) 2002-2023, by Derick Rethans
你能解释一下吗?原因是什么,我在哪里还没有将其配置为默认仅使用 PHP8.3,如果我猜对了问题的原因......
php(用于从控制台运行脚本的二进制文件)并且php-fpm可以具有不同的 ini 文件集,因此,一个加载模块,而第二个则不加载。以下是我的 PHP 容器中的示例:
也就是说,控制台使用
php-cli.ini. 让我们尝试找到它php-fpm:我认为你的情况可能类似(本质上相反,但机制相同)。