在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本身只有进程的概念,而其所谓的“线程 ...
随机推荐
- Aggregating local features for Image Retrieval
Josef和Andrew在2003年的ICCV上发表的论文[10]中,将文档检索的方法借鉴到了视频中的对象检测中.他们首先将图像的特征描述类比成单词,并建立了基于SIFT特征的vusual word ...
- c#_错误处理_基础
attribute: using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
- 理解php Hash函数,增强密码安全
1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2.“Hash” ...
- SCI&EI 英文PAPER投稿经验【转】
英文投稿的一点经验[转载] From: http://chl033.woku.com/article/2893317.html 1. 首先一定要注意杂志的发表范围, 超出范围的千万别投,要不就是浪费时 ...
- The Famous Clock
描述 Mr. B, Mr. G and Mr. M are now in Warsaw, Poland, for the 2012’s ACM-ICPC World Finals Contest. T ...
- Android(java)学习笔记79:java中InetAddress类概述和使用
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机. 在TCP/IP协议中,这个标识号就是IP地址. 那么,我们如果获取和操作I ...
- jq宽高 详解
alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...
- C#当前应用程序路径及环境变量
一.获取当前文件的路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径.可获得当前执行的 ...
- xcode笔记
1.Alt键的使用 2.设置捕捉所有意外断点:停在代码出错处 2015年07月27日09:52:12 3.搜索 command + F:在当前的文件中搜索 command + Shift ...
- hihocoder 1310 岛屿
#1310 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. ...