`

Ubuntu下PHP安装C扩展

阅读更多
一、服务器环境

- Ubuntu 16.04.2 LTS x64
- PHP 7.0.21

二、服务器端软件安装

安装apache2

    apt-get install apache2

安装php

    apt-get install php7.0
    apt-get install php7.0-dev
    apt-get install libapache2-mod-php7.0
   
    // Ubuntu 14.04, php5.6.32
    apt-get install python-software-properties
    add-apt-repository ppa:ondrej/php
    apt-get update
    apt-get install -y php5.6
    apt-get install php5.6-dev

三、添加到系统公共库

执行以下命令,将库文件添加到系统公共库中。

    cp libmyclass1.so /usr/local/lib/      #拷贝到系统公共库
    cp libmyclass2.so /usr/local/lib/
    ldconfig                             #载入库

四、安装php扩展

下载php源码,使用源码包中的ext_skel工具创建扩展。

下载php源码

下载php当前版本对应的源码版本。使用以下命令查看当前php版本

    php -v

我的版本是7.0.21,到php官网下载对应的tar.gz文件

    wget http://php.net/distributions/php-7.0.21.tar.gz

解压并进入到ext目录

    tar -zxvf php-7.0.21.tar.gz
    cd php-7.0.21/ext

创建mythcrypt扩展

    ./ext_skel --extname=myclass1

更新config.m4文件,去掉第16和18行的dnl

    cd mythcrypt
    vim config.m4
   
    16:  PHP_ARG_ENABLE(myclass1, whether to enable mythcrypt support,
    17:  dnl Make sure that the comment is aligned:
    18:  [  --enable-myclass1           Enable myclass1 support])

更新myclass1.c

    vim myclass1.c

    // 添加函数声明
    const zend_function_entry myclass1_functions[] = {
        PHP_FE(confirm_myclass1_compiled,      NULL)           /* For testing, remove later. */
        PHP_FE(my_function,   NULL)
        PHP_FE(my_request,   NULL)
        PHP_FE_END      /* Must be the last line in mythcrypt_functions[] */
    };
   
    // 在PHP_FUNCTION(confirm_myclass1_compiled)函数定义下面添加如下代码。不同的版本添加的语法不一样,以下分别是5.3.10、5.6.31、7.0.21版本的示例。
   
    // 5.3.10
    PHP_FUNCTION(my_function)
    {
        char *ret;
   
        ret=my_function();
        RETURN_STRING(ret,0);
    }
    PHP_FUNCTION(my_request)
    {
        char *dataid;
        char *ret;
   
        .....;
    }
   
    // 5.6.31
    PHP_FUNCTION(my_function)
    {
        char dataout[1024]={0};
   
        my_function(dataout);
        RETURN_STRING(dataout, 1);
    }
    PHP_FUNCTION(my_request)
    {
        int datalen;
        char *dataid;
        char dataout[1024]={0};
   
        .....;
    }
   
    // 7.0.21
    PHP_FUNCTION(my_function)
    {
        char dataout[1024]={0};
   
        my_function(dataout);
        RETURN_STRING(dataout);
    }
    PHP_FUNCTION(my_request)
    {
        char *dataid;
        char dataout[1024]={0};
   
        .....;
    }

5.6.31 和 7.0.21版本中,函数my_function和my_request的返回字符串长度最大值是1024。

使用phpize命令生成configure文件

    phpize
    ./configure
    make LDFLAGS=-lmyclass1 # 载入libmycalss1.so并make
    make test                # 测试
    make install             # 将库安装到php的扩展文件夹里面

更新php配置文件,添加mythcrypt库

    vim /etc/php/7.0/apache2/php.ini

    extension=myclass1.so

    # 重启apache
    /etc/init.d/apache2 restart


五、编写测试脚本

测试脚本如下:

    <?php
    echo my_function();
    echo my_request(1, '{"user_id":"test","crypto_service_id":1,"signature":"testasdfawef","data_in":{"sn":"A1000012312234234","hwid":"12312123234234234"}}');
   


分享到:
评论

相关推荐

    ubuntu下安装wordpress

    在Ubuntu下搭建WordPress博客环境是一项涉及多个步骤的技术过程,涵盖了Web服务器、数据库、脚本语言以及网站内容管理系统(CMS)的安装与配置。以下是对这一过程的详细解析,旨在帮助理解如何在Ubuntu系统中创建一...

    ubuntu下安装yaf框架

    在Ubuntu操作系统中安装Yaf(Yet Another Framework)框架是一个常见的任务,尤其对于...在Ubuntu上安装和使用Yaf需要对Linux系统、PHP扩展安装有一定了解,但只要遵循上述步骤,就能顺利地在你的开发环境中集成Yaf。

    Ubuntu下安装配置WordPress

    **在Ubuntu下安装配置WordPress详解** WordPress是一款基于PHP和MySQL的开源博客系统,因其功能强大、易于使用且扩展性极佳而备受青睐。在Ubuntu环境下搭建WordPress,不仅可以享受到Linux系统的高效资源管理、高...

    使用c语言开发php扩展教程

    在Linux(例如Ubuntu)系统上,你需要安装C语言的GCC编译器、Make构建工具以及Autoconf系统环境检测工具,可以通过运行以下命令来安装: ```bash sudo apt-get install gcc make autoconf ``` 接下来,使用PHP源码...

    Ubuntu安装mysql和sqlite3

    1. **PHP:**使用命令`sudo apt-get install php5-sqlite`安装PHP的SQLite扩展。 2. **Python:**使用命令`sudo apt-get install python-pysqlite2`安装Python的SQLite库。 3. **Ruby:**使用命令`sudo apt-get ...

    Ubuntu上安装yaf扩展的方法

    在Ubuntu系统中,安装PHP的Yaf(Yet Another Framework)扩展是提升PHP应用程序性能的关键步骤。Yaf是由著名PHP开发者鸟哥(Laruence Yee)开发的一个C语言编写的高性能PHP框架,它提供了更好的性能和更接近底层的...

    在Ubuntu上安装phpmyadmin

    在 Ubuntu 上安装 phpMyAdmin phpMyAdmin 是一个基于 Web 的 MySQL 数据库管理工具,它提供了一个友好的图形用户界面,使用户可以轻松地管理 MySQL 数据库。在 Ubuntu 上安装 phpMyAdmin 非常简单,本文将指导您...

    ubuntu安装LAMP

    如果你遇到的是旧版本的Ubuntu,或者需要安装特定版本的软件,可能需要参考类似文章中的详细步骤,比如文章中提到的通过源码编译安装PHP、MySQL和相关扩展。但这种做法通常适用于有经验的系统管理员,因为编译安装...

    Ubuntu下安装PHP的mongodb扩展操作命令

    在 https://pecl.php.net/package/mongo 下载 PHP的mongodb扩展的源码 复制代码 代码如下: $ wget -c https://pecl.php.net/get/mongo-1.6.9.tgz $ tar zxvf mongo-1.6.9.tgz $ cd mongo-1.6.9 $ phpize $ ./...

    sphinx扩展,适用linux

    例如,在 Ubuntu 上可以使用 `sudo apt-get install libmysqlclient-dev libprotobuf-dev protobuf-compiler libprotobuf-c-dev libcurl4-openssl-dev libxml2-dev libssl-dev` 来安装必要的依赖。 2. **重新编译 ...

    libsmbclient-php:smbclient对PHP的扩展

    libsmbclient-php是一个PHP扩展,它使用Samba的libsmbclient库为PHP程序提供与Samba相关的功能。 入门 从PECL安装 pecl install smbclient 二进制软件包安装 一些发行版提供了二进制软件包: Fedora / RHEL / ...

    ubuntu下编译安装xcache for php5.3 的具体操作步骤

    以下是编译安装xcache for PHP 5.3在Ubuntu下的详细步骤: 首先,你需要确保你的系统已经安装了PHP 5.3.3。如果没有,可以通过apt-get或其它包管理工具进行安装。 1. 下载xcache的源代码包: ``` wget ...

    PHP扩展开发.docx

    推荐使用Ubuntu Linux,因为它的软件包管理工具(Apt)使得安装过程相对简单。首先,确保你已经熟悉Linux基础操作,然后按照以下步骤安装PHP开发环境: 1. 安装Apache服务器:`sudo apt-get install apache2` 2. 安装...

    ubuntu下C++开发环境汇总

    在 Ubuntu 环境下使用 Eclipse 需要安装相关的插件,例如 CDT(C/C++ Development Tooling),以便支持 C++ 语言的开发。Eclipse 的代码编辑器支持语法高亮、代码补全、代码重构等功能,提高了开发效率。 2. Anjuta...

    ubuntu12.04使用c编写php扩展模块教程分享

    本教程将指导你在Ubuntu 12.04系统上如何使用C语言为PHP 5.3.10版本创建自定义扩展模块。首先,确保你的系统已经安装了Apache和PHP。如果需要,可以通过`sudo apt-get install apache2 php5`命令进行安装。 1. 获取...

    Win 7下硬盘安装Ubuntu 10.10的方法

    ### Win 7下硬盘安装Ubuntu 10.10的方法详解 #### 核心知识点解析 在探索如何在Windows 7环境下通过硬盘安装Ubuntu 10.10以实现双系统共存的过程中,我们将深入讨论以下关键步骤和知识点: 1. **下载必要软件** ...

    搭建Apache+MySQL+PHP平台.rar_4 3 2 1_Ubuntu搭建_apache2.2.4_php

    通过遵循以上步骤,您可以在Ubuntu 16.04上成功安装和配置Apache、MySQL和PHP,以及PHPmyadmin,从而构建一个完整的Web开发环境。在实践中,可能需要根据具体需求调整配置,例如添加更多的PHP扩展或优化服务器性能。...

Global site tag (gtag.js) - Google Analytics