1. 程式人生 > >45.PHP擴充套件模組安裝

45.PHP擴充套件模組安裝

11.32 php擴充套件模組安裝

擴充套件

apache rewrite教程 

http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ 

http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html

apache rewrite 出現死迴圈 

http://ask.apelearn.com/question/1043

php錯誤日誌級別參考 

http://ask.apelearn.com/question/6973

php開啟短標籤 

http://ask.apelearn.com/question/120

php.ini詳解 

http://legolas.blog.51cto.com/2682485/493917

 

 

~~1.

PHP動態擴充套件模組(PHP原始碼包裡ext下沒有需要的模組的情況下的安裝方法)

/usr/local/src/php-7.1.6/ext/

 

例如我們php已經安裝好了,但是發現少了一個模組。但是又不能從新編譯php,那麼可以用下面這種方式(實際上就是編譯出一個.so的檔案):

 

/usr/local/php/bin/php -m //檢視模組

[PHP Modules]
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

下面安裝一個redis的模組 在lamp架構下,通常當做一個快取來用

cd /usr/local/src/

wget https://codeload.github.com/phpredis/phpredis/zip/develop

mv develop phpredis-develop.zip

unzip phpredis-develop.zip

cd phpredis-develop

/usr/local/php/bin/phpize 生成configure檔案(此處需生成一個configure模組),注意輸出是否報錯

./configure --with-php-config=/usr/local/php/bin/php-config 一般只需要加--with就可以了

make && make install

/usr/local/php/bin/php -i |grep extension_dir 檢視擴充套件模組存放目錄,我們可以在php.ini中去自定義該路徑,但針對這樣擴充套件的模組,我們不用去改他的路徑,預設就好

vim /usr/local/php/etc/php.ini 增加一行配置(可以放到檔案最後一行)

extension=redis.so

 

 

~~2.

假如在PHP原始碼包裡ext下有需要的模組的情況下的安裝方法

(/usr/local/src/php-7.1.6/ext/)

cd /usr/local/src/php-7.1.6/ext/

cd zip cd到需要安裝的這個模組目錄下

/usr/local/php7/bin/phpize 直接執行,生成.configure

./configure --with-php-config=/usr/local/php7/bin/php-config

make&&make install

 

 

例項:

~~1.

[root@axinlinux-01 ~]# /usr/local/php/bin/php -m

[PHP Modules]

[root@axinlinux-01 ~]# cd /usr/local/src

[root@axinlinux-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop

[root@axinlinux-01 src]# du -sh develop

236K develop

[root@axinlinux-01 src]# mv develop phpredis-develop.zip

[root@axinlinux-01 src]# unzip phpredis-develop.zip

[root@axinlinux-01 src]# cd phpredis-develop/

[root@axinlinux-01 phpredis-develop]# ls 要生成一個.configure的檔案,才能編譯

arrays.markdown    cluster.markdown  COPYING  debian.control     library.c         package.xml      redis_array.h       redis_cluster.c   redis_session.c  tests
Changelog.md       common.h          crc16.h  INSTALL.markdown   library.h         php_redis.h      redis_array_impl.c  redis_cluster.h   redis_session.h
cluster_library.c  config.m4         CREDITS  ISSUE_TEMPLATE.md  mkdeb-apache2.sh  README.markdown  redis_array_impl.h  redis_commands.c  rpm
cluster_library.h  config.w32        debian   liblzf             mkdeb.sh          redis_array.c    redis.c             redis_commands.h  serialize.list

[root@axinlinux-01 phpredis-develop]# /usr/local/php7/bin/phpize 該命令生成.configure

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

Cannot find autoconf. Please check your autoconf installation and the 有報錯(少autoconf包)

$PHP_AUTOCONF environment variable. Then, rerun this script.

[root@axinlinux-01 phpredis-develop]# yum install -y autoconf

[root@axinlinux-01 phpredis-develop]# /usr/local/php7/bin/phpize 重新生成

Configuring for:

PHP Api Version: 20160303

Zend Module Api No: 20160303

Zend Extension Api No: 320160303 這樣的輸出才是正常

[root@axinlinux-01 phpredis-develop]# ls 會看到configure這個檔案

acinclude.m4     Changelog.md       config.guess  configure.in  debian             liblzf           missing           php_redis.h         redis_array_impl.h  redis_commands.h  serialize.list
aclocal.m4       cluster_library.c  config.h.in   config.w32    debian.control     library.c        mkdeb-apache2.sh  README.markdown     redis.c             redis_session.c   tests
arrays.markdown  cluster_library.h  config.m4     COPYING       INSTALL.markdown   library.h        mkdeb.sh          redis_array.c       redis_cluster.c     redis_session.h
autom4te.cache   cluster.markdown   config.sub    crc16.h       install-sh         ltmain.sh        mkinstalldirs     redis_array.h       redis_cluster.h     rpm
build            common.h           configure     CREDITS       ISSUE_TEMPLATE.md  Makefile.global  package.xml       redis_array_impl.c  redis_commands.c    run-tests.php

[root@axinlinux-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config

[root@axinlinux-01 phpredis-develop]# echo $?

0

[root@axinlinux-01 phpredis-develop]# make

[root@axinlinux-01 phpredis-develop]# make install

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

這個路徑就是我們要的.so的檔案

[root@axinlinux-01 phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

opcache.so  redis.so

[root@axinlinux-01 phpredis-develop]# /usr/local/php7/bin/php -m 並沒有這個模組,說明現在php還不支援他

[PHP Modules]
bz2
Core
ctype
date
dom
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

[root@axinlinux-01 phpredis-develop]# /usr/local/php7/bin/php -i | grep -i extension_dir 檢視一下,不用改

extension_dir => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303 => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303
sqlite3.extension_dir => no value => no value

[root@axinlinux-01 phpredis-develop]# vim /usr/local/php7/etc/php.ini

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

;extension=php_pgsql.dll

;extension=php_shmop.dll 搜尋extension,在一長串extension的最下面加上extension=redis.so

[root@axinlinux-01 phpredis-develop]# /usr/local/php7/bin/php -m |grep redis

redis 這時候就有了

[PHP Modules]
bz2
Core
ctype
date
dom
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

 

~~2.

[root@axinlinux-01 php7]# cd /usr/local/src/php-7.1.6/ext/

[root@axinlinux-01 ext]# ls

bcmath      curl     exif                ftp      iconv      ldap      mysqlnd  pcntl         pdo_mysql   pgsql     recode      skeleton  sqlite3   tidy       xmlrpc
bz2         date     ext_skel            gd       imap       libxml    oci8     pcre          pdo_oci     phar      reflection  snmp      standard  tokenizer  xmlwriter
calendar    dba      ext_skel_win32.php  gettext  interbase  mbstring  odbc     pdo           pdo_odbc    posix     session     soap      sysvmsg   wddx       xsl
com_dotnet  dom      fileinfo            gmp      intl       mcrypt    opcache  pdo_dblib     pdo_pgsql   pspell    shmop       sockets   sysvsem   xml        zip
ctype       enchant  filter              hash     json       mysqli    openssl  pdo_firebird  pdo_sqlite  readline  simplexml   spl       sysvshm   xmlreader  zlib

以上是php原始碼包裡自帶的可用的模組,我們需要的這裡有的話,就可直接安裝

[root@axinlinux-01 ext]# /usr/local/php7/bin/php -m |grep zip 假如我們編譯zip

[root@axinlinux-01 ext]# cd zip 首先cd到這個zip目錄下來

[root@axinlinux-01 zip]# ls

config.m4  config.w32  CREDITS  examples  lib  LICENSE_libzip  php_zip.c  php_zip.h  tests  TODO  zip_stream.c

[root@axinlinux-01 zip]# /usr/local/php7/bin/phpize 直接執行,生成.configure

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

[root@axinlinux-01 zip]# ./configure --with-php-config=/usr/local/php7/bin/php-config

[root@axinlinux-01 zip]# echo $?

0

[root@axinlinux-01 zip]# make

[root@axinlinux-01 zip]# echo $?

0

[root@axinlinux-01 zip]# make install

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

[root@axinlinux-01 zip]# echo $?

0

[root@axinlinux-01 zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

opcache.so  redis.so  zip.so