您的位置:首页 > 运维架构 > Linux

Linux环境下编写PHP扩展篇

2012-08-15 13:36 148 查看

编写PHP扩展篇

Linux环境下编写:

1. 下载php源码:www.php.net下载php-5.4.5版本。(php-5.4.5-src.zip)

解压到home/hjn/php-5.4.5-src 目录下。

(命令:unzip -d /home/hjn/ Downloads/php-5.4.5-src.zip)

2. 环境: 源码PHP 5.4.5 运行php环境php 5.3.5 ubuntu7.10

3. 到源码包的ext目录下(cd /home/hjn/php-5.4.5-src/ext).

4. 执行:./ext_skel --extname=myso

注:ext_skel 可能为只读文件。用(sudo chmod 777 ext_skel )修改文件权限。

成功后如下图:


可看到在ext目录下多了myso这个模块文件夹。

5. 进入myso目录下编写,(cd myso)。


6. 修改config.m4

修改(将dnl去掉)

PHP_ARG_WITH(myext, for myext support,

dnl Make sure that the comment is aligned:

[ --with-myext Include myext support])

或者

PHP_ARG_ENABLE(myext, whether to enable myext support,

dnl Make sure that the comment is aligned:

[ --enable-myext Enable myext support])

7. 用phpize生成配置文件。

可能提示未安装phpize,根据提示安装了就行。Sudo apt-get install php5-dev.

成功如图:


8. 编写第一个输出HelloWorld函数。

1) 修改php_myso.h

找到PHP_FUNCTION(confirm_extest_compiled); 在下面添加

PHP_FUNCTION(myso);

保存退出

强制保存命令(w !sudo tee %)

2) 修改myso.c

找到const zend_function_entry extest_functions[]

在PHP_FE_END上面添加

PHP_FE(myso, NULL)
注:看网上资料不用改PHP_FE_END ,但是我每次都报错。所以如果报错改成{NULL,NULL,NULL}就好了

最后在文件最后编写函数内容.

PHP_FUNCTION(myso)

{

Php_printf("HelloWorld");

}

保存退出。

9.编译

命令:./configure --with-myso

如果报错,可能config.m4没改好。

Make

报错,根据报错修改.h和.c文件

最后,安装

Sudo Make install

10.修改php.ini文件

找不到该文件可以运行命令 locate php.ini寻找。或运行php文件phpinfo().里面有详细信息。

添加extension=myso.so

最后重启apache

11.测试

编写test.php文件

<?php

myso();

phpinfo();

?>

运行,输出:

HelloWorld



成功!!!

有问题可发邮箱:993324512@qq.com。一起学习^ ^.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: