同apache
[root@LAMPLINUX ~]# /usr/local/php/bin/php -m
檢視子產品
<a href="http://s3.51cto.com/wyfs02/M02/6F/93/wKiom1Wg0dGzpNZPAAE3Gnj-Z5k753.jpg" target="_blank"></a>
包含靜态子產品和動态子產品,因為沒有辨別是以看不出來。
解決辦法:2種
去重新編譯源碼包--> make--> make install
使用動态方法加載,隻編譯這個子產品就可以了。
是以,我們用第二種方法編譯動态共享子產品
進入php源碼包,很多子產品的源碼都在/usr/local/src/php-5.5.26/ext/ 的目錄下,由于我們一開始
[root@LAMPLINUX ~]# /usr/local/php/bin/php -m 沒有發現“curl”子產品,我們以curl為例子:
列出/usr/local/src/php-5.5.26/ext/ 目錄下的源碼
[root@LAMPLINUX ~]# ls /usr/local/src/php-5.5.26/ext/
在清單裡找到curl子產品
進入curl的源碼下
[root@LAMPLINUX ~]# cd /usr/local/src/php-5.5.26/ext/curl
在curl下生成configure(可執行檔案)
[root@LAMPLINUX curl]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20121113
Zend Module Api No: 20121212
Zend Extension Api No: 220121212
編譯(手打)(固定文法)
[root@LAMPLINUX curl]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@LAMPLINUX curl]# echo $?
[root@LAMPLINUX curl]# make
[root@LAMPLINUX curl]# make install
生成了curl.so動态子產品,這個子產品在哪裡呢?
下面我們去找一下extension_dir(extension_dir是存放動态擴充子產品的目錄)
[root@LAMPLINUX curl]# /usr/local/php/bin/php -i |grep extension_dir
産生資訊
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212
sqlite3.extension_dir => no value => no value
紅字部分即為extension_dir預設的存放目錄
[root@LAMPLINUX curl]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212
檢視到curl.so的子產品
curl.so opcache.so
同時,我們對于extension_dir也是可以自定義的,但是預設我們一般去不更改
編輯php.ini
[root@LAMPLINUX curl]# vim /usr/local/php/etc/php.ini
查找 /extension 找到extension區域在最後一行加入 extension=curl.so 如圖
[root@LAMPLINUX curl]# /usr/local/php/bin/php -m
現在就有了curl子產品了
<a href="http://s3.51cto.com/wyfs02/M02/6F/90/wKioL1Wg01Xxy8-_AAD-KLCW554945.jpg" target="_blank"></a>
延伸:
我們也可以想想,這裡面動态加載子產品都有哪些呢?
<a href="http://s3.51cto.com/wyfs02/M02/6F/90/wKioL1Wg1K6iAtqUAABA-xDA1-E622.jpg" target="_blank"></a>
最終過濾出來隻有一個,說明上面的子產品中,隻有curl.so它是動态子產品,其他全部都是靜态。
本文轉自 聽丶飛鳥說 51CTO部落格,原文連結:http://blog.51cto.com/286577399/1673244