English |
  • 美国VPS主机推荐
  • |
  • 代购服务
  • |
  • 10美元以下VPS
  • |
  • VPS新手指南/教程
  • |
  • 留言板
  • |
  • 关于
  • | 登录 |

    lnmp之安装PHP模块/扩展(不需要重装PHP)

    2010年08月16日 下午 | 作者:VPS侦探

    VPS侦探一直在努力的去营造一个VPS相关话题的交流环境,于是有了很多的VPS相关的教程、QQ群、有了论坛、有了LNMP一键安装包...,在此说明一下Linux下PHP模块/扩展都是采用此方法安装或安装php直接编译进去,PHP的dll模块/扩展文件是Windows下php模块的使用方法,两者是无法通用的!!

    VPS侦探主要根据论坛上lnmp版块用户反映来写一些教程,今天说一下如何为lnmp的php安装一些自己需要的模块,下面主要有两种方式进行安装:源码编译方式安装和pecl方式进行安装

    源码编译安装

    安装前

    安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装。然后下载当前PHP版本的源码并解压。

    大部分php扩展/模块的源码编译安装就是三个步骤,在源码目录下执行:
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    有些模块可能会稍微有差异(如要求添加一些参数),但是 --with-php-config=/usr/local/php/bin/php-config 是所有PHP模块最基本的参数这个是必须要有的,具体看模块的安装文档就可以。

    本文以imap和exif模块为例,进入php源码目录下ext,里面会有大部分模块的源码,这里都是php自带模块,第三方模块的话需要自己找第三方模块的源码。

    一、安装imap模块

    1、安装imap模块前需要先安装imap所需的库:

    CentOS :yum install libc-client-devel

    Debian:apt-get install libc-client-dev

    2、首先进入php安装目录的ext目录

    比如php的源码目录为:/root/lnmp1.3-full/src/php-5.4.45/

    则执行:cd /root/lnmp1.3-full/src/php-5.4.45/ext/  ###一般安装完LNMP php源码都是自动删除了的,需要自己进入src目录下解压对应版本的php源码包。###

    我们要安装imap模块,执行cd imap/

    再执行 /usr/local/php/bin/phpize 会返回如下信息:
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519

    再执行以下命令:

    [root@vpser imap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-kerberos --with-imap-ssl

    [root@vpser imap]# make && make install

    执行完返回:

    Build complete.
    Don't forget to run 'make test'.

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

    表示已经成功,再修改/usr/local/php/etc/php.ini

    查找:extension_dir 再下面一行添加上extension = "imap.so"

    保存,执行/etc/init.d/php-fpm restart 重启。

    在浏览器里面输入http://ip/p.php,打开探针,安装IMAP模块前:

    安装IMAP模块后:

    二、安装exif模块

    安装exif不需要另外安装库,所以省略掉了安装库的步骤。

    比如php的源码目录为:/root/lnmp1.3-full/src/php-5.4.45/

    则执行:cd /root/lnmp1.3-full/src/php-5.4.45/ext/

    我们要安装exif模块,执行cd exif/

    再执行 /usr/local/php/bin/phpize 会返回如下信息:
    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519

    再执行以下命令:

    [root@vpser imap]# ./configure --with-php-config=/usr/local/php/bin/php-config

    [root@vpser imap]# make && make install

    执行完返回:

    Build complete.
    Don't forget to run 'make test'.

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

    表示已经成功,再修改/usr/local/php/etc/php.ini

    查找:extension = 再最后一个extension= 后面添加上extension = "exif.so"

    保存,执行/etc/init.d/php-fpm restart 重启。

    在/home/wwwroot/下面创建一个exif.php的文件,内容如下:

    <?php

    $exif = read_exif_data ('IMG_0001.JPG');
    while(list($k,$v)=each($exif)) {
    echo "$k: $v<br>\n";
    }

    ?>

    其中IMG_0001.JPG为照片文件。

    未安装exif模块前:

    安装exif模块后:

    可以读出照片的exif信息。

    安装其他模块也基本上都是这两种方式,当./configure --with-php-config=/usr/local/php/bin/php-config 执行这个的时候是会检查系统上库是否安装上,如果没有安装上就会报错,按错误提示安装相关的库就行。

    pecl方式安装

    pecl方式安装是使用pecl install xxx 命令的方式,xxx为php模块名字,但是该php模块必须是 https://pecl.php.net 上面的且必须要提前按要求安装好依赖包,不同php模块可能不需要也可以需要安装,具体可以官网手册 https://www.php.net/manual/en/index.php 中查询。

    lnmp默认禁用掉了部分php函数,需要将exec、popen、readlink这些函数从禁用函数中去掉,可以在/usr/local/php/etc/php.ini 中查找disable_function 就可以在后面看到是否有禁用函数。

    安装好依赖包就可以直接,pecl install xxx 进行安装php模块。

    如果还有其他问题,可以到https://bbs.vpser.net提问,记得提问前在https://bbs.vpser.net/search.php搜索一下哦。

    >>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/manage/lnmp-php-install-ext.html
    VPS侦探推荐:
    遨游主机VultrLinode搬瓦工LOCVPSKVMLAHOSTKVMHostXen80VPS美国VPS主机,国内推荐腾讯云阿里云
    欢迎加入VPS侦探论坛交流:https://bbs.vpser.net

    发表评论

    *必填

    *必填 (不会被公开)

    评论(42条评论)

    1. 奔跑说道:

      安装Lamp的时候openssl已经被安装了,不过版本是1.0.1e, 如果要单独升级这个openssl到1.0.2e 该怎么做啊,跪求了!

    2. VPS侦探说道:

      @zhanhanjie, php源码目录,lnmp1.3-full/src/php-版本号/ext/

    3. zhanhanjie说道:

      /root/lnmp1.3-full 下面没有ext/目录 弄半天了,请问是啥情况啊

    4. weaming说道:

      我想装pgsql模块出错

      make && make install

      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘php_pgsql_do_connect’:
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1399:13: error: ‘PG_VERSION’ undeclared (first use in this function) if (atof(PG_VERSION) >= 7.2) { ^/root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1399:13: note: each undeclared identifier is reported only once for each function it appears in
      In file included from /usr/local/php/include/php/main/php.h:39:0,
      from /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:35:/root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘php_pgsql_get_link_info’:
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:1644:45: error: ‘PG_VERSION’ undeclared (first use in this function)
      add_assoc_string(return_value, "client", PG_VERSION, 1); ^
      /usr/local/php/include/php/Zend/zend_API.h:393:111: note: in definition of macro ‘add_assoc_string’
      #define add_assoc_string(__arg, __key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
      ^
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘zif_pg_get_notify’:
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:5284:12: error: ‘PG_VERSION’ undeclared (first use in this function)
      if (atof(PG_VERSION) >= 9.0) {
      ^
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c: In function ‘build_tablename’:
      /root/下载/lnmp1.2-full/src/php-5.6.9/ext/pgsql/pgsql.c:6506:9: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
      token = table;
      ^
      make: *** [pgsql.lo] Error 1

    5. VPS侦探说道:

      @song, 分别安装上这几个模块就行了

    6. VPS侦探说道:

      @song, 这个是正常的信息

    7. song说道:

      我在按照你的方法安装sysvshm时出现
      Configuring for:
      PHP Api Version: 20090626
      Zend Module Api No: 20090626
      Zend Extension Api No: 220090626
      configure.in:3: warning: prefer named diversions
      configure.in:3: warning: prefer named diversions
      这个提示了,是怎么回事呢

    8. song说道:

      军哥你好,我的网站要使用workman插件,安装的时候提示
      * sysvshm [NOT SUPORT]
      * sysvmsg [NOT SUPORT]
      * libevent [NOT SUPORT]
      这三个不支持,请问怎么安装这三个扩展呢

    9. VPS侦探说道:

      @okool, pecl安装教程:http://bbs.vpser.net/thread-8721-1-1.html

    10. okool说道:

      你的这个一键安装xxx的能不能做得通用一点,目录和配置文件和其它编译安装都不一致。对目录记忆都不好,还要去看到底配置文件是哪些才修改。

      一般 php扩展直接用pecl就能安装。但你一键却没提供。

      懒得自己编译,偷懒使用这一键安装,现在偷懒不成,反留下一堆麻烦事。

    11. 大佐说道:

      @大佐,
      补充一下,我进pdo_informix里用的是 ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-informix=/opt/IBM/informix ←这个是informix csdk安装路径 然后 make & make install , php.ini 加 extension="pdo_informix.so",但是php -i|egrep "pdo|PDO"能看到pdo odbc mysql sqlite支持,没有informix,国外网站上找了一些,步骤当中都表示这里应该能查到才对的.求赐教.

    12. 大佐说道:

      用这个方法安装PDO_informix模块,一切都ok,但是探针里看不到informix支持,phpinfo里有informix支持,用pecl install pdo_informix居然提示md5对不上...我安装lnmp的时候选择php是5.3.17,难道是版本高了? pdo_informix 是 1.3.1

      最关键是,要怎样安装才能用 php -i|egrep "pdo|PDO"中看到对informix的support呀,请赐教,我搜索了好久没有informix的相关帖子.

    13. VPSer说道:

      @凌舞雪祈, 肯定没进exif目录

    14. 凌舞雪祈说道:

      安装exif模块
      ./configure --with-php-config=/usr/local/php/bin/php-config
      -bash: ./configure: 没有那个文件或目录

    15. VPSer说道:

      @Di Zhang, 看官网的安装文档http://yaf.laruence.com/manual/yaf.install.html#yaf.installation.linux,很标准的安装流程,没成功报什么错?

    16. Di Zhang说道:

      请问怎么安装yaf框架,我按照yaf官方的方法安装没有成功