fairyguo 发表于 2018-12-14 11:21:16

LAMP搭建18:PHP安装扩展模块

  查看PHP模块
  # php -m
  
  bz2
  Core
  ctype
  date
  dom
  ereg
  exif
  fileinfo
  filter
  gd
  hash
  iconv
  json
  libxml
  mbstring
  mcrypt
  mysql
  openssl
  pcre
  PDO
  pdo_sqlite
  Phar
  posix
  Reflection
  session
  SimpleXML
  soap
  sockets
  SPL
  sqlite3
  standard
  tokenizer
  xml
  xmlreader
  xmlwriter
  zlib
  
  如果我们发现有一个模块没有编译进来,解决办法有两种:第一,需要重新编译,重新配置;第二,单独编译该模块,使用动态共享的方式加载该模块。我们自己尝试编译一个PHP动态共享模块。
  PHP安装包的ext目录下包含了许多模块的源代码:
  # cd /usr/local/src/php-5.4.36
  # cd ext
  # ls
  bcmath      dba               fileinfoiconv      mbstringodbc          pdo_mysql   posix       simplexmlstandard   wddx       zlib
  bz2         dom               filter    imap       mcrypt    openssl       pdo_oci   pspell      skeleton   sybase_ctxml
  calendar    enchant             ftp       interbasemssql   pcntl         pdo_odbc    readline    snmp       sysvmsg    xmlreader
  com_dotnetereg                gd      intl       mysql   pcre          pdo_pgsql   recode      soap       sysvsem    xmlrpc
  ctype       exif                gettext   json       mysqli    pdo         pdo_sqlitereflectionsockets    sysvshm    xmlwriter
  curl      ext_skel            gmp       ldap       mysqlnd   pdo_dblib   pgsql       session   spl      tidy       xsl
  date      ext_skel_win32.phphash      libxml   oci8      pdo_firebirdphar      shmop       sqlite3    tokenizerzip
  PHP默认没有没有安装curl模块,下面命令返回无结果:
  # php -m |grep -i curl
  我们以编译安装PHP的curl模块为例进行说明:进入curl目录
  # cd curl
  # ls
  config.m4config.w32CREDITScurl.dspinterface.cmulti.cpackage.xmlphp_curl.hstreams.ctests
  生成configure相关的文件:
  # yum install -ym4 autoconf#安装两个自动生成configure的工具
  # /usr/local/php/bin/phpize#生成configure
  Configuring for:
  PHP Api Version:         20100412
  Zend Module Api No:      20100525
  Zend Extension Api No:   220100525
  # ls
  acinclude.m4    config.h.in   config.w32   ltmain.sh      package.xml
  aclocal.m4      config.m4   CREDITS      Makefile.globalphp_curl.h
  autom4te.cacheconfig.sub    curl.dsp   missing          run-tests.php
  build         configure   install-sh   mkinstalldirs    streams.c
  config.guess    configure.ininterface.cmulti.c          tests
  配置
  # ./configure --with-php-config=/usr/local/php/bin/php-config
  错误1:configure: error: Please reinstall the libcurl distribution -
  easy.h should be in /include/curl/
  解决:#yum -y install curl-devel
  编译
  # make
  # echo $?
  0
  安装
  # make install
  Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
  # echo $?
  0
  模块已生成
  # ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
  curl.so
  查看extension_dir
  # php -i |grep extension_dir
  extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525
  sqlite3.extension_dir => no value => no value
  # ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
  curl.so
  也可以自定义extension_dir
  # vim /usr/local/php/etc/php.ini
  ……
  ; Directory in which the loadable extensions (modules) reside.
  ; http://php.net/extension-dir
  ; extension_dir = "./"
  ; On windows:
  ; extension_dir = "ext"
  ……
  配置加载curl.so
  ……
  ;extension=php_pgsql.dll
  ;extension=php_pspell.dll
  ;extension=php_shmop.dll
  extension=curl.so
  ……
  查看动态加载的模块
  # php -m |grep curl
  curl
  




页: [1]
查看完整版本: LAMP搭建18:PHP安装扩展模块