天天看點

LAMP搭建18:PHP安裝擴充子產品

檢視PHP子產品

[root@centos6 ~]# php -m

[PHP Modules]

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

[Zend Modules]

如果我們發現有一個子產品沒有編譯進來,解決辦法有兩種:第一,需要重新編譯,重新配置;第二,單獨編譯該子產品,使用動态共享的方式加載該子產品。我們自己嘗試編譯一個PHP動态共享子產品。

PHP安裝包的ext目錄下包含了許多子產品的源代碼:

[root@centos6 ~]# cd /usr/local/src/php-5.4.36

[root@centos6 php-5.4.36]# cd ext

[root@centos6 ext]# ls

bcmath      dba                 fileinfo  iconv      mbstring  odbc          pdo_mysql   posix       simplexml  standard   wddx       zlib

bz2         dom                 filter    imap       mcrypt    openssl       pdo_oci     pspell      skeleton   sybase_ct  xml

calendar    enchant             ftp       interbase  mssql     pcntl         pdo_odbc    readline    snmp       sysvmsg    xmlreader

com_dotnet  ereg                gd        intl       mysql     pcre          pdo_pgsql   recode      soap       sysvsem    xmlrpc

ctype       exif                gettext   json       mysqli    pdo           pdo_sqlite  reflection  sockets    sysvshm    xmlwriter

curl        ext_skel            gmp       ldap       mysqlnd   pdo_dblib     pgsql       session     spl        tidy       xsl

date        ext_skel_win32.php  hash      libxml     oci8      pdo_firebird  phar        shmop       sqlite3    tokenizer  zip

PHP預設沒有沒有安裝curl子產品,下面指令傳回無結果:

[root@centos6 ext]# php -m |grep -i curl

我們以編譯安裝PHP的curl子產品為例進行說明:進入curl目錄

[root@centos6 ext]# cd curl

[root@centos6 curl]# ls

config.m4  config.w32  CREDITS  curl.dsp  interface.c  multi.c  package.xml  php_curl.h  streams.c  tests

生成configure相關的檔案:

[root@centos6 curl]# yum install -y  m4 autoconf #安裝兩個自動生成configure的工具

[root@centos6 curl]# /usr/local/php/bin/phpize #生成configure

Configuring for:

PHP Api Version:         20100412

Zend Module Api No:      20100525

Zend Extension Api No:   220100525

acinclude.m4    config.h.in   config.w32   ltmain.sh        package.xml

aclocal.m4      config.m4     CREDITS      Makefile.global  php_curl.h

autom4te.cache  config.sub    curl.dsp     missing          run-tests.php

build           configure     install-sh   mkinstalldirs    streams.c

config.guess    configure.in  interface.c  multi.c          tests

配置

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

錯誤1:configure: error: Please reinstall the libcurl distribution -

easy.h should be in <curl-dir>/include/curl/

解決:[root@centos6 curl]#  yum -y install curl-devel

編譯

[root@centos6 curl]# make

[root@centos6 curl]# echo $?

安裝

[root@centos6 curl]# make install

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

子產品已生成

[root@centos6 curl]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

curl.so

檢視extension_dir

[root@centos6 curl]# 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

也可以自定義extension_dir

[root@centos6 curl]# 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

檢視動态加載的子產品

[root@centos6 curl]# php -m |grep curl

curl