linux編譯php的c擴展

第一步:安裝php5php

第二步:打開終端【爲來方便,這裏使用root用戶】,使用CD命令進入到php5源碼包的ext目錄nginx

第三步:在終端鍵入如下命令web

./ext_skel --extname=extestapache

咱們的擴展庫名叫「extest」,此命令執行後會在ext目錄新建一個extest目錄。windows

第四步:回到終端,使用CD命令進入extest目錄,鍵入如下命令/var/web/php/bin/phpize函數

這是站長的phpize的目錄,你須要修改爲你本身的。運行完以後會在extest目錄生成config.m4以及config.w32(windows底下使用),以及configure程序。php-fpm

雙擊打開extest目錄,打開php_extest.h文件,找到PHP_FUNCTION(confirm_extest_compiled);測試

在這一行的上面添加PHP_FUNCTION(extest_add);保存後退出。spa

這裏是咱們要爲extest庫編寫的add函數到聲明。debug

第五步:打開extest.c文件,找到const zend_function_entry extest_functions[],往下看3行,在PHP_FE_END的上面一行添加PHP_FE(extest_add,   NULL),在文件的最後添加函數實現到代碼:

點擊(此處)摺疊或打開

PHP_FUNCTION(extest_add){
long int a,b,c;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"ll",&a,&b )==FAILURE){
return;
}
c=a+b;
RETURN_LONG(c);
}

 

保存後退出。

第六步:打開config.m4文件,找到
PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module...和
[  --enable-caleng_module           Enable caleng_module support])兩行,刪除前面的dnl打開。

第七步:回到終端,使用CD命令進入extest目錄,鍵入命令:

./configure --with-php-config=/var/web/php/bin/php-config

make

make install

/var/web/php/bin/php-config這是站長php-config文件的目錄,你應該修改爲本身的。

編譯順利的話,在extest/moduels目錄和/var/web/php/lib/php/extensions/no-debug-non-zts-20090626目錄會產生一個extest.so文件。

第八步:打開php.ini,添加extension=extest.so,保存退出。

第九步:若是你用的是apache,重啓apache。若是你用的是nginx+php-fpm,須要重啓php-fpm。

如何重啓php-fpm?站長沒有作重啓設置,應此只好先殺死php-fpm的進程在從新啓動了。

打開/var/web/php/var/log/php-fpm.log,定位到文檔最後,查看php-fpm到進程號,個人是2156.

回到終端,使用命令kill 2156殺死php-fpm進程。

而後重啓php-fpm,回到終端使用CD命令進入/var/web/php/sbin目錄,使用./php-fpm重啓php-fpm。

第十步:測試擴展庫。新建一個index.php文件,代碼以下:

<?php

echo extest_add(1,2);

phpinfo();

?>

相關文章
相關標籤/搜索