Установка xhprof для разных версий PHP
На сервере три версии PHP 8.1, 8.2, 8.3 После стандартной установки следующими командами
sudo apt install php-pear
sudo apt install php-dev
sudo pecl install xhprof
у меня модуль почему то установился для PHP8.2
я попробовал изменить настройку pecl, указав путь к php8.3 вот так
which php8.3
pecl config-set php_dir /usr/bin/php8.3
и затем попробовал повторить
sudo pecl install xhprof
но получил ошибку что модуль exist
В итоге установить под 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, если я правильно предполагаю причину проблемы...
Ответы (1 шт):
php (бинарник, использующий для запуска скриптов из консоли) и php-fpm могут иметь разные наборы ini-файлов и соответственно один загружает модуль, а второй нет.
Вот пример из моего пхп контейнера:
$ php -i|grep 'Loaded Co'
Loaded Configuration File => /usr/local/etc/php/php-cli.ini
То есть консольный использует php-cli.ini. Попробуем найти его php-fpm:
$ php-fpm -i|grep 'php-cli.ini'
$
Думаю, в вашем случае, может быть ситуация похожая (обратная по сути, но такая же по механизму).