• 扩展修改ubuntu 13.04 用c快速编写一个php扩展


    首先声明,我是一个菜鸟。一下文章中现出技术误导情况盖不负责

        本文通过非常倏地的方法解讲了如何作制一个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个小时以上.
      上帝: 还是让中国国家打进世界杯.

  • 相关阅读:
    AX2009 VS平台报表开发学习笔记(二)数据源
    字符集的问题
    php侧拉菜单,漂亮,可以向右或者向左展开,支持FF,IE
    ASP正则函数替换分页后的参数
    asp 图片正则 替换,替换前检查图片是不是本地地址的方法
    asp正则过滤重复字符串的代码
    PHP 正则 email语句详解
    签东软了
    东软医疗面试归来
    linux的svn co
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3049839.html
Copyright © 2020-2023  润新知