Linux 編譯安裝 php 擴展包 curl

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(啓動)
相關文章
相關標籤/搜索