Ubuntu16.04編譯PHP7.0,並開發PHP擴充套件
準備
下載完成後解壓:
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";
}
?>