Linux 編譯安裝 php 擴展包 curl


php源碼目錄:/root/php

php編譯目錄:/usr/local/webserver/php/

curl源碼目錄:/root/curl

1.curl,主要用於發送http請求,是php的一個擴展包。

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(啟動)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM