编程学习网 > PHP技术 > php扩展是用什么语言?
2021
07-08

php扩展是用什么语言?

php扩展是可以用五种语言编写扩展,C语言、C++、Zephir语言、Nim语言、Rust语言,今天着重讲解一下如何用C语言编写PHP扩展


1:预定义

在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def

内容是你希望定义的函数名以及参数:

int a(int x,int y)

string b(string str,int n)


2:到php源码目录的ext目录

#cd /usr/local/php-5.4.0/ext/


执行命令,生成对应扩展目录

#./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def


3:修改config.m4

去掉dnl的注释


PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module support,

Make sure that the comment is aligned:

[  --enable-caleng_module           Enable caleng_module support])


4:修改caleng_module.c


代码如下:


/* {{{ proto int a(int x, int y)

   */

PHP_FUNCTION(a)

{

int argc = ZEND_NUM_ARGS();

int x;

int y;

   int z;

if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)

 return;

z=x+y;

 RETURN_LONG(z);

}

/* }}} */

/* {{{ proto string b(string str, int n)

   */

PHP_FUNCTION(b)

{

char *str = NULL;

   int argc = ZEND_NUM_ARGS();

   int str_len;

   long n;

   char *result;

   char *ptr;

   int result_length;

   if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)

       return;

   result_length = str_len * n;

   result = (char *) emalloc(result_length + 1);

   ptr = result;

   while (n--) {

       memcpy(ptr, str, str_len);

       ptr += str_len;

   }

   *ptr = '\0';

   RETURN_STRINGL(result, result_length, 0);

}

/* }}} */


5:生成扩展库

#cd ./caleng_module

#/usr/local/php/bin/phpize

#./configure --with-php-config=/usr/local/php/bin/php-config

#make

#make install



6:到php的对应extensions目录

如上图所示

#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

改目录下有生成的caleng_module.so文件


7:修改php.ini

php.ini如果找不到可以从phpinfo()打出的信息看到

#cd /usr/local/php/lib/

php.ini增加扩展信息

extension=caleng_module.so


8:重启Apache

# /usr/local/apache2/bin/apachectl restart


9:检查加载

/usr/local/php/bin/php -m


10:PHP调用



代码如下:


echo a(1,2);


输出 3  就说明成功了!

以上就是“php扩展是用什么语言?如何用C语言编写php扩展”的详细内容,想要获取更多php教程欢迎关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取