我們編譯完php之後,它有一個功能可以查看所有加載的模塊,這些模塊會包含一些靜態的也會包含一些動態的
[root@zhangmengjunlinux curl]# /usr/local/php/bin/php -m
一些動態的可以再php.ini也就是php的配置文件裏去定義,有時候在我們編譯完php之後發現少了一些模塊沒有編譯進來,解決辦法有兩種:
第一去重新編譯安裝,找到你的源碼包重新來一遍
第二種使用動態的方式把它加載進來,你單獨的編譯出來的模塊就可以了,類似於apache的動態模共享模塊,現在我們來嘗試編譯動態模塊
很多模塊的源碼包都在ext目錄下,假如說我們沒有curl,編譯一下curl
[root@zhangmengjunlinux ext]# cd curl 進入它的源碼下,可以編譯一個模塊
[root@zhangmengjunlinux curl]# ls
config.m4 config.w32 CREDITS curl.dsp interface.c multi.c package.xml php_curl.h streams.c tests
[root@zhangmengjunlinux curl]# /usr/local/php/bin/phpize 用這個命令可以目的是爲了生成 configuring生成這個可執行文件
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
好了我們去編譯安裝
[root@zhangmengjunlinux curl]# ./configure --with-php-config=/usr/local/php/bin/php-config
這個是固定的語法,一般編譯不會有錯,往往是因爲少了什麼庫,然後make,makeinstall
接下來就是去php.ini配置文件中把配置一下,把這個模塊加載進來就可以了,extension_dir是存放這些擴展模塊的,那我們應該去找一下她的extension到底在哪了
extension_dir也是可以自定義的,我們去配置一下extension_dir
保存退出,這個時候我們可以查看curl模塊是不是已經加載進來了
好了我們看到已經加載進來了,我們如何看動態加載的模塊有那些呢,可以再php.ini裏去grep
[root@zhangmengjunlinux curl]# grep '^extension=' /usr/local/php/etc/php.ini
extension=curl.so
其實我們最終過濾出來只有一行,說明只有curl.so它是動態的