在Linux环境下给php添加mbstring扩展
1,今天在开发项目的时候使用了一个php函数(mb_strcut),运行代码时候提示报错"call to undefind function mb_strcut",首先检查下函数名没有写错,难道是php.ini中没有开启扩展,后来去phpinfo看了确实没有加载mb_strcut,后台得知这个扩展在官方由mbstring构建
2,去php官方pecl首页搜索竟然搜索不到,由于php安装包中带有所有的扩展,所以楼主用wget下载一个php5.6.24的源码包了,php官方下载地址http://php.net/downloads.php 进入列表选择一个你需要的php源码包,由于楼主服务器用的版本是5.6.24所以果断下载5.6.24,如果用wget下载的话,默认下载目录就会当前目录,weget命令格式狠简单:wget [url] (比如下载一个php 5.6.25的包直接这样 wget http://hk1.php.net/get/php-5.6.25.tar.bz2/from/this/mirror) 下载完毕以后会得到一个mirror文件,然后用tar -zxvf mirror 解压得到一个文件夹,进入文件夹内,找到ext,这个文件夹里面包含的是php扩展的源文件,找到你需要的扩展,楼主需要的mbstring,找到后,我们就可以使用phpize来安装了。phpize是官方提供的一个动态添加扩展的工具,详细了解可以度娘 phpize
3,首先我要确定当前系统存在phpize,并且可以使用,我们whereis phpize,可以看到搜索结果,比如楼主的是 /usr/bin/phpize,恭喜你,你可以直接使用了,每个人的目录可能所有不同,一般phpize是包含在/usr/bin下面的,确定了phpize命令执行路径后 ,我们进入需要编译安装的扩展目录,楼主就是进入mbstring ,进入目录后在当前位置输入命令 /usr/bin/phpize 命令执行完毕后,目录里面会多几个文件,有configure.. ,然后输入 ./configure --with-php-config=/usr/local/php/bin/php-config命令,注意前面是有一个点号额,如果提示错误,就说明你的php-config路径和我的不一致,可以whereis php-config,找到这个文件,然后换成正确的路径,在没有报错的情况下,我们依次执行,make 和make install 命令执行完毕后,它会提示你一个路径,这个路径里面就是我们编译的好的扩展,比如楼主的生成的扩展在 /usr/lib64/php/modules,我们进入这个目录,就可以看到刚才生成的扩展,在Linux下面扩展的后缀为 .so ,楼主的微mbstring.so ,这一步就做好了
4,这一步我们需要修改php.ini配置文件,同样用whereis php.ini 找到Php.ini文件所在的目录,一般在/etc目录下面,找到配置文件后,用vi /etc/php.ini命令或者vim /etc/php.ini命令打开这个文件,默认是普通模式,我们使用vim快捷键G快速定位到字符最底部 添加一行 extension=mbstring.so 这一行就是开启你刚才生成扩展,还有一个问题如果没有你使用的是默认位置存放扩展,请把刚才生成.so文件复制到默认文件夹中,如果你在当前配置文件中声明了 extension_dir ,就把扩展文件放到声明的文件夹中,这样才能扩展文件才能被加载到。添加完 extension = mbstring后这一步就做完了
5,最后一步需要重启服务器,重启包括2部分,因为楼主使用的是LNMP,所以需要重启的是nginx 和php-fpm,如果你使用的Lamp 那么需要重启的是apche和php-fpm,如果没有开启php-fpm就不需要重启php-fpm,开启nginx可以使用nginx自带的管理命令,同样使用whereis nginx ,找到nginx命令执行目录,楼主的是/usr/sbin/nginx,输入 /usr/sbin/nginx -s reload 后重启nginx服务,前面的路径一定要是正确的,可能你的和楼主的不一样,接下来重启php-fpm,重启php-fpm,我们先用命令 ps -aux |grep php-fpm 获取当前系统的包含php-fpm进程列表,我们需要的是加载了php-fpm.conf文件那一个进程的进程号,第二列的数字就是进程号,找到进程号后,使用kill [这里填写刚才的进程号] ,比如楼主的是31411 ,就是kill 31411 ,这样做是将php-fpm的进程停掉,然后我们whereis php-fpm 查看php-fpm执行的命令的路径,楼主的是/usr/sbin/php-fpm,执行/usr/sbin/php-fpm后就可以重新启动php-fpm,启动后去phpinfo(),可以看到我们添加的扩展已经在列表中了。至此我们给php添加扩展就已经完成了。如果安装完以后依然没有出现的话,就需要仔细排查哪一步做错了。
在Linux环境下给php添加mbstring扩展的更多相关文章
- MAMP 环境下为 php 添加 pcntl 扩展
前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...
- Linux环境下安装PHP的mbstring模块
cd /home/local/php-5.6.25/ext/mbstring/usr/local/php/bin/phpize./configure --with-php-config=/usr/lo ...
- linux环境下为php7装phpredis扩展
phpredis在php7.php5下都有不同的版本,装岔了可能会编译报错,所以在安装之前请先看下自己的php是啥版本. 我的redis装的是redis3.2.3版本. 用phpinfo()查看安装的 ...
- Linux环境下安装PHP的memced扩展
先下载libmemcached: wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.t ...
- linux环境下安装PHP的OpenSSL扩展
先安装依赖包:yum install openssl openssl-devel 进入PHP安装包里的OpenSSL文件夹,根据个人的安装包位置不同,此处是 cd /home/local/php.5. ...
- java 在linux环境下写入 syslog 问题研究
1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...
- 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解
一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
- 多线程编程之Linux环境下的多线程(一)
一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...
随机推荐
- mysql自动备份策略
目标:每7天做一个完整备份,每天做一份binlog日志,第二周将之前的备份删除并产生新的完整备份和binlog日志,备份要求每天2:00自动完成 mysql 版本:mysql5.5 1.开启binlo ...
- python multiprocess不能完全关闭socket的验证
近日项目有原来的多线程升级成为多进程模型后,但出现了个问题,在持续运行一天左右系统处理能力开始变慢,并不时打印以下信息: too many opened files 修改ulimit中open fil ...
- css笔记19:浮动的案例
案例一: 1. 首先是01.html文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- Advanced Installer
Advanced Installer是一款功能强大.可生成符合 MS Windows 认证的 Windows Installer 的 MSI 安装包制作工具,具有友好的图形用户界面,直观而且非常简单的 ...
- Xquartz远程访问linux
实验环境:mac 操作系统: OS X 10.9.4 Mavericksmac IP 192.168.1.106XQuartz: ...
- SQL Server 通配符 Wildcard character
SQL Server 通配符 Wildcard character % 任意长度的字符串,如:'%computer%' _ 单个字符,如:'_ean' [] ...
- java url中文 编译和解码
js到servlet: js端 var minename='中文'; minename=encodeURI(encodeURI(minename)); java servlet 端 String na ...
- 写代码的心得,怎么减少编程中的 bug?
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...
- [原创]centos6.5 dhcpd 服务一直failed状态
因为要部署kickstart自动化系统分发,所以需要在上面配置dhcp服务器,之前也使用同样的机器进行配置,没是没有问题的,但是这次在配置了dhcpd.conf文件后,重启服务的时候却一直提示 [ro ...
- asp.net mvc开发的社区产品相关开发文档分享
分享一款基于asp.net mvc框架开发的社区产品--近乎.目前可以在官网免费下载,下载地址:http://www.jinhusns.com/Products/Download?type=whp 1 ...