10477777 发表于 2018-12-14 12:36:40

php配置——扩展模块如何安装

  有时候,我们会有一些需求,这些模块在我们刚刚编译完php之后,发现少了一个模块,没有编译进来,
  解决办法有两种:
  第一种你需要去重新编译,找到你的源码包,重新编译,重新配置,
  第二种使用动态的方式把它加载进来,就是你单独地去编译出来一个模块就可以了,类似于apache的动态共享模块。
  ## 查看PHP加载的模块
  # /usr/local/php/bin/php -m
  解释说明:
  这些模块里有动态的,有静态的;而一些动态的可以在php.ini里去定义;
  搜索动态模块在php.ini里 grep '^extension=' /usr/local/php/etc/php.ini
  ## 查看PHP自带的一些源码包、模块
  # cd /usr/local/src/php-5.3.28/ext/
  # ls
  解释说明:
  若里面没有所需要的,可以从网上去下载源码包
  ## 比如扩展安装curl模块(先查看一下有没有安装此模块)
  # /usr/local/php/bin/php -m|grep -i curl
  #
  ## 没有则进入到curl目录里
  # cd curl
  ## 通过phpize工具生成configure进行编译
  # /usr/local/php/bin/phpize
  Configuring for:
  PHP Api Version:         20090626
  Zend Module Api No:      20090626
  Zend Extension Api No:   220090626
  # ls
  acinclude.m4    build         config.m4   configure.incurl.dsp   ltmain.sh      mkinstalldirsphp_curl.h   tests
  aclocal.m4      config.guessconfig.subconfig.w32    install-sh   Makefile.globalmulti.c      run-tests.php
  autom4te.cacheconfig.h.in   configure   CREDITS       interface.cmissing          package.xml    streams.c
  ## 安装源码包三部曲
  # ./configure --with-php-config=/usr/local/php/bin/php-config
  解释说明:
  --with-php-config固定语法
  # make
  # make install
  Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
  解释说明:
  会把模块的文件放在此目录下
  ## 查看生成的curl模块
  # ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
  curl.so
  解释说明:
  这个路径是extension_dir中配置的;extension_dir它是存放扩展模块的;
  通过/usr/local/php/bin/php -i |grep -i extension_dir可以查看;
  如果两个路径一致,那么直接手动加载即可。如果不在同一目录下,手动加载需全路径;
  ## 在配置文件中手动加载
  # vim /usr/local/php/etc/php.ini
  extension=curl.so
http://note.youdao.com/yws/res/3693/WEBRESOURCE1f0a1c6b80845889a4393ed9846c7fb2
  ## 查看是否加载成功
  # /usr/local/php/bin/php -m |grep curl
  curl
  ## 重启apache加载这个模块
  # /usr/local/apache2/bin/apachectl -t
  Syntax OK
  # /usr/local/apache2/bin/apachectl graceful
http://note.youdao.com/yws/res/5221/WEBRESOURCEdfe92741e188233cc9d4bac96fe49f5b
  ###########若我们不小心在php.ini模块名写错了(写成了curl22.so):################
  ## 检查是否加载了此模块(这肯定是没有的)
  # /usr/local/php/bin/php -m|grep curl
  #
  ## 接下来,查看一下错误日志
  # tail /usr/local/php/logs/php_errors.log
   PHP Warning:PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/curl22.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/curl22.so: cannot open shared object file: No such file or directory in Unknown on line 0
  ###############################################################################
  




页: [1]
查看完整版本: php配置——扩展模块如何安装