Я использую PHP 5.6 на моем сервере centos-release-6-8.el6.centos.12.3.x86_64.

Я получил следующую ошибку от одной из моих функций PHP.

Fatal error: Call to undefined function mb_detect_encoding() 

Итак, я попытался установить расширение mbstring. когда я выполню

sudo yum install php-mbstring

CLI возвращается

Package php-mbstring-5.6.25-1.el6.remi.x86_64 already installed and latest version
Nothing to do

И я также попытался "sudo yum установить php56-mbstring" Это возвращает

No package php56-mbstring available. Nothing to do

Но, тем не менее, PHP-функция выдаёт мне эту ошибку, и в phpinfo() нет «mbsting»

Я также добавляю следующую строку в httpd.conf

LoadModule php5_module modules/libphp5.so

Сервер перезапущен

Обновить:

[~]# php -v
PHP 5.6.22 (cli) (built: Jun 13 2016 11:43:51) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
[~]# php -m | grep mbstring
[~]# php -i | grep mbstring

Ничто не возвращается к php -m | grep mbstring & php -i | grep mbstring

[~]# rpm -qil php-mbstring
Name        : php-mbstring                 Relocations: (not relocatable)
Version     : 5.6.25                            Vendor: Remi Collet
Release     : 1.el6.remi                    Build Date: Wed 31 Aug 2016 18:33:05 BST
Install Date: Mon 05 Sep 2016 16:26:05 BST      Build Host: builder.remirepo.net
Group       : Development/Languages         Source RPM: php-5.6.25-1.el6.remi.src.rpm
Size        : 2856446                          License: PHP and LGPLv2 and BSD and OpenLDAP
Packager    : http://blog.remirepo.net/
URL         : http://www.php.net/
/etc/php-zts.d/20-mbstring.ini
/etc/php.d/20-mbstring.ini
/usr/lib64/php-zts/modules/mbstring.so
/usr/lib64/php/modules/mbstring.so
/usr/share/doc/php-mbstring-5.6.25
/usr/share/doc/php-mbstring-5.6.25/libmbfl_LICENSE
/usr/share/doc/php-mbstring-5.6.25/oniguruma_COPYING
/usr/share/doc/php-mbstring-5.6.25/ucgendat_LICENSE

[~]# rpm -qa 'php*'
php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
php-mbstring-5.6.25-1.el6.remi.x86_64
php-common-5.6.25-1.el6.remi.x86_64

1 ответ1

2

Установка расширений / модулей PHP через RPM установит файлы библиотеки в /usr/lib64/php/modules/ . Запуск php -i |grep ^extension_dir показывает каталог расширения, который в данный момент настроен.

Каталог расширений /usr/local/lib/php/extensions/no-debug-non-zts-20131226 указывает, что на каком-то этапе в прошлом PHP устанавливался из исходного кода и что файл php.ini относится к этой исходной установке в настоящее время используется вместо /etc/php.ini предоставляемого пакетом php-common .

Чтобы решить эту проблему, вы должны удалить остатки этой исходной установки. К сожалению, Makefile, поставляемый с исходным кодом PHP, не включает цель uninstall поэтому вы не можете просто запустить make uninstall . Я бы предложил использовать команду find для отслеживания этих файлов по дате их изменения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .