首先声明,我是一个菜鸟。一下文章中现出技术误导情况盖不负责
本文通过非常倏地的方法解讲了如何作制一个PHP 5.4 环境的扩展(PHP Extension)
希望够能在图文的方法下让想倏地学习的友人解了一下作制进程。
需求:我们要写一个叫two的扩展,这个扩展里头有一个函数叫two_test
能功是输入一个字符串‘hello’ 则,返回this is two: 你输入的字符串是“hello”
一:先载下一份php码源---》址地
二: 生成扩展架构
1. 解压码源:
andy@ubuntu:~$ tar -zxvf php-5.4.14.tar.gz 对码源行进解包
2. 生成扩展架构:
php为了扩展开辟便利供提了一个相似生成器的工具,ext_skel在php码源的ext录目上面
我们要需执行它并且指定扩展的名字,然后它会帮我们生成这个扩展的架构
andy@ubuntu:~$ cd php-5.4.14/ext/
andy@ubuntu:~/php-5.4.14/ext$ sudo ./ext_skel --extname=two
三:修改置配:要需将扩展(two)上面的config.m4中的16,17,18三行前面的dnl删撤除
andy@ubuntu:~/php-5.4.14/ext$ cd two/
andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim config.m4
四:编写代码
1.andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim php_two.h
找到第45行:PHP_FUNCTION(confirm_heiyeluren_compiled);
在这行上面新增一行:PHP_FUNCTION(two_test);
2.andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim two.c
找到第42行:zend_function_entry heiyeluren_functions
在这里头加增一行PHP_FE(two, NULL)
最后:加增函数能功代码
PHP_FUNCTION(two_test) { char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } len = spprintf(&strg, 0, "
this is two: 你输入的字符串是
: %s/n", arg); RETURN_STRINGL(strg, len, 0); }
五:编译装安 这里的命令都在扩展two的录目下执行的
andy@ubuntu:~/php-5.4.14/ext/two$ sudo phpize
如果没有phpize要装安php5-dev 命令sudo apt-get install php5-dev
andy@ubuntu:~/php-5.4.14/ext/two$ sudo ./configure --with-php-config=/usr/bin/php/php-config
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make test
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make install
可以到/usr/lib/php5/20100525/这个件文夹中去看看有没有一个叫two.so如果有就明说功成了
六:加载块模
编辑php.ini 入加extension = two.so
注意:如果你不存在扩展件文录目,或者装安报错,那么可以自行建立这个录目,然后把扩展拷贝到录目下,然后记得把 php.ini 件文中的 extension_dir 修改成该录目:
离开php.ini 同录目下的conf.d下创立two.ini并写入extenstion=two.so 只要需这一行就行 。
七:启重apache
andy@ubuntu:/etc/php5/apache2/conf.d$ sudo /etc/init.d/apache2 restart
输出 phpinfo() ,查找two能看到
看看函数否是存在并且调用,在web录目下建立:two.php
<?php echo two_test('hello'); ?>
结果如图:
在现php扩展已作制功成了!
文章结束给大家分享下程序员的一些笑话语录: 程序员的愿望
有一天一个程序员见到了上帝.上帝: 小伙子,我可以满足你一个愿望.程序员: 我希望中国国家队能再次打进世界杯.
上帝: 这个啊!这个不好办啊,你还说下一个吧!
程序员: 那好!我的下一个愿望是每天都能休息6个小时以上.
上帝: 还是让中国国家打进世界杯.