Ubuntu16.04編譯PHP7.0,並開發PHP擴展

準備

先下載PHP源文件使用:
wget https://downloads.php.net/~ab/php-7.0.11RC1.tar.bz2

下載完成後解壓:
tar jxf php-7.0.11RC1.tar.bz2

安裝編譯用的一些第三方:
sudo apt-get update
sudo apt-get install libxml2-dev

安裝gcc
sudo apt-get install build-essential

sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev

sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libmcrypt-dev
sudo apt-get install libreadline6 libreadline6-dev
進入目錄
cd php-7*

編譯 安裝 PHP

./configure

sudo make install

編譯完成後,使用php -v
查看當前版本,當出現下圖所示說明編譯安裝完成:
這裏寫圖片描述

擴展開發

生成擴展

首先進入PHP代碼中的ext目錄:
在其下面創建一個文件:sunny.def,內容如下:

string self_concat(string str, int n)

運行下面的命令:

./ext_skel --extname=sunny --proto=sunny.def

可以看到當前目錄下多出了一個sunny目錄,進入sunny目錄:
可以看到有個config.m4文件,修改其中的這三行:
這裏寫圖片描述
去掉dnl
這裏寫圖片描述
修改完成後先安裝一個第三方:
sudo apt-get install php-dev
然後在當前目錄下使用命令行:
phpize
會看到出現了很多新文件,在使用命令行:
./configure
sudo make
就可以看到當前目錄下多了一個modules文件夾:
打開之後有個sunny.so文件即爲可用的linux下的擴展

將擴展加入到當前的PHP環境中:

使用命令行:php -info|more
可以看到當前PHP的配置文件的目錄,如下:
這裏寫圖片描述
擴展目錄如下:
這裏寫圖片描述
先將sunny.so複製到對應得擴展目錄,再修改php.ini,方式如下:

可以選擇複製當前PHP源文件下的php.ini-development或者php.ini-production文件中的一個到上面的:
/usr/local/lib文件夾下:
修改php.ini,加入:
extension=sunny.so
如此修改完成之後使用命令行查看:
php -m
可以看到如下圖所示:
這裏寫圖片描述
說明已經安裝完成。
如果想進一步測試,可以用下面的方式:
新建一個php文件,內容爲:

<?php
print confirm_sunny_compiled("sunny");

可以看到輸出了下圖內容說明已經測試成功:
這裏寫圖片描述
然後重新打開擴展目錄sunny,修改其中的sunny.c文件
這裏寫圖片描述
修改完成後重新編譯,複製sunny.so到指定的擴展目錄,然後修改測試php文件爲

<?php
for ($i = 1; $i <= 3; $i++){
     print self_concat("ThisIsUseless", $i);
     print "\n";
}
?>

執行後輸出:
這裏寫圖片描述
說明擴展成功,當然上面只是簡單的C語言循環字符串的demo,沒有實際意義,僅供參考
參考:http://blog.csdn.net/earbao/article/details/50235413
http://www.laruence.com/2009/04/28/719.html

以上

發佈了64 篇原創文章 · 獲贊 32 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章