在 PHP 5.6 CentOS 6.8 中安装 PHP 扩展 mbstring

在 PHP 5.6 CentOS 6.8 中安装 PHP 扩展 mbstring

我在我的 centos-release-6-8.el6.centos.12.3.x86_64 服务器上使用 PHP 5.6。

我的一个 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 install 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

通过 RPM 安装 PHP 扩展/模块会将库文件安装到 中/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

要解决此问题,您应该删除此源安装的残余内容。不幸的是,PHP 源代码提供的 Makefile 不包含目标,uninstall因此您无法简单地运行make uninstall。我建议使用find命令按修改日期跟踪这些文件。

相关内容