今天遇到了一个很坑的问题,提示如下
Call to undefined function mb_detect_encoding()
- 下载对应PHP版本的镜像,我下载的是5.6.11,在Linux下执行:
上网查了很多资料都说安装mbstring的扩展,然而并没有成功,一直提示各种奇怪的错误,套娃错误。。。
想了很久最终发现我的PHP安装包下虽然有mbstring的目录,但是里面的文件不全,猜测是这个原因导致的,所以换了个思路,下载一个版本一致的php安装包,重新安装一遍mbstring,说干就干,最终成功,把这个采坑过程整理如下:
wget http://mirrors.sohu.com/php/php-5.6.11.tar.gz
- 下载好之后解压:
tar zxvf php-5.6.11.tar.gz
- 切换到安装包的mbstring目录下
cd php-5.6.11/ext/mbstring/
- 在上述目录下执行phpize:(注意,phpize和php-config和上述目录不一定一致,不一致可以使用whereis xxx查找到对应的目录)
/usr/bin/phpize
- 执行配置:(注意,phpize和php-config和上述目录不一定一致,不一致可以使用whereis xxx查找到对应的目录)
./configure --with-php-config=/usr/bin/php-config
- 安装:
make && make install
- 把so添加到php.ini中
将这段配置extension=mbstring.so 添加到php.ini (查找php.ini的方法用 whereis php.ini)
- 重启Nginx
service nginx restart
- 重启PHP
service php-fpm restart
- 安装完毕,检查mbstring扩展是否安装成功,在项目根目录下新建一个文件,输出phpinfo
echo phpinfo();
搜索到了,安装成功!