php源碼目錄:/root/phpphp
php編譯目錄:/usr/local/webserver/php/html
curl源碼目錄:/root/curlnginx
1.curl,主要用於發送http請求,是php的一個擴展包。web
2.安裝過程:
(1)curl下載:http://curl.haxx.se/download.html
(2)具體安裝過程:
- 解壓:tar -zxvf curl.tar.gz
- cd /(php源碼目錄,不是php編譯目錄)/ext/curl
- 運行phpize: /(php編譯目錄)/bin/phpize
- ./configure --with-php-config=/(php編譯目錄)/bin/php-config --with-curl=/(curl源碼目錄)
- make && make install
- 修改php.ini,增長:extension=curl.so(若是沒有安裝過其餘php擴展,則須要同時配置extension_dir="/(php編譯後目錄)/lib/php/extensions/no-debug-non-zts-20121212/",上一個步驟生成.so文件的時候,會輸出extension_dir目錄)
(3)檢驗是否安裝成功:
- /(php編譯後目錄)/bin/php -m | grep curl ——正常打印curl,則表示安裝成功(php -m會打印出已安裝的擴展模塊)
3.踩過的坑:
(1)直接在curl的源碼目錄最上層,運行phpize,提示以下錯誤:
Cannot find config.m4.
Make sure that you run '/home/zhuyx/local/php-5.5.3/bin/phpize' in the top level source directory of the module
緣由:
phpize擴展安裝,源包須要有config.m4這個配置文件;當前擴展的源碼包不包含(memcache的就包含)。
解決方法:
(1)進入php源碼包的 ext/curl 下面運行phpize,再進行安裝
(2)./configure --with-php-config=/php編譯後目錄/bin/php-config --with-curl=curl源碼目錄
問題擴展:
安裝其餘的php擴展的時候,遇到相似問題,均可以採起上述解決方案。
(2)關於php.ini
樓主一開始修改的是 php編譯後目錄/lib/php.ini 這個文件,修改以後新增模塊並不生效。後來才知道,前面這個是默認(編譯時候不指定)的擴展配置目錄,若是編譯的時候指定了php.ini的目錄,之後都須要修改指定目錄下的php.ini,例如樓主的是
php編譯後目錄/php.ini
。
(3)調用curl()的php腳本,命令行能夠運行,瀏覽器訪問提示以下錯誤:
Fatal Error:Call to undefined function curl()
緣由:
樓主的服務器是nginx,安裝了curl擴展後,沒有重啓php-fpm致使。
解決方法:
重啓php-fpm.
ps aux | grep php-fpm (找到master進程)
kill -SIGINT master進程
進入php-5.5.3/sbin,執行 ./php-fpm(啓動)