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扩展的更多相关文章

  1. MAMP 环境下为 php 添加 pcntl 扩展

    前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...

  2. Linux环境下安装PHP的mbstring模块

    cd /home/local/php-5.6.25/ext/mbstring/usr/local/php/bin/phpize./configure --with-php-config=/usr/lo ...

  3. linux环境下为php7装phpredis扩展

    phpredis在php7.php5下都有不同的版本,装岔了可能会编译报错,所以在安装之前请先看下自己的php是啥版本. 我的redis装的是redis3.2.3版本. 用phpinfo()查看安装的 ...

  4. Linux环境下安装PHP的memced扩展

    先下载libmemcached: wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.t ...

  5. linux环境下安装PHP的OpenSSL扩展

    先安装依赖包:yum install openssl openssl-devel 进入PHP安装包里的OpenSSL文件夹,根据个人的安装包位置不同,此处是 cd /home/local/php.5. ...

  6. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  7. 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解

    一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...

  8. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  9. 多线程编程之Linux环境下的多线程(一)

    一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...

随机推荐

  1. RTB广告展示分步说明

    原文:http://contest.ipinyou.com/cn/manual.shtml RTB (Real Time Bidding, 实时竞价) 是近年来计算广告领域最激动人心的进展之一. 它增 ...

  2. BootStrap2学习日记1--网格系统

    在BoootStrap2的版本中采用的布局方式是12栏网格布局(把浏览器的Width分12栏,布局中使用每个元素所占格数的不同来达到各种布局),包括(固定)网格布局(Grid System)和流式网格 ...

  3. Windows主机通过SSH连接虚拟机里的Linux系统

    Windows 7 + VMware 11 VMWare里:编辑-虚拟网络编辑器-VMnet8(NAT模式)-NAT设置...添加主机端口和虚拟机IP地址以及虚拟机端口 Windows7系统:wind ...

  4. 临时2级页表的初始化过程 head_32.S 相关代码解释

    page_pde_offset = (__PAGE_OFFSET >> 20); /* __PAGE_OFFSET是0xc0000000,page_pde_offset = 3072 = ...

  5. 网络编程(发送get和post请求到服务器端,并获取响应)

    一:B/S结构,浏览器端到服务器端通信依赖http协议 交互过程: 1:在浏览器地址栏输入http://ip:port/应用/资源路径 2:浏览器根据ip和服务器建立连接,port确定和那个应用进行交 ...

  6. 关于搭建haddoop分布式系统的全部过程复习

    1\在vmware中更改了虚拟机的网络类型,--->NAT方式,(虚拟交换机的ip可以从vmvare的edit-->vertual network editor看到)2.根据这个交换机(网 ...

  7. 关于Java中的构造方法和set方法()给属性赋值

    对于一个类中的成员变量(属性),属性如果都设置成了private类型,那么对外给属性设置了get和set方法 , 那么外部程序中给这些属性设置值,有两种方式. 第一种就是通过set()方法. 第二种就 ...

  8. Visual Studio Team Foundation Server 2015(TFS 秘钥、序列号)

    Visual Studio Team Foundation Server 2015 序列号:PTBNK-HVGCM-HB2GW-MXWMH-T3BJQ

  9. iOS下使用sqlite3

    1.创建数据库 使用firefox的sqlite manager创建和打开数据库,详细请参考: http://www.cnblogs.com/hanjun/archive/2012/10/29/274 ...

  10. Commons JXPath - Object Graph Traversal

    JXPath 提供了使用 Xpath 语法操纵符合 Java 类命名规范的 JavaBeans 的工具.也支持 maps.DOM 和其他对象模型.对于深层次结构的 JavaBean,使用 JXPath ...