`

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下安装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 $ ./...

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

    系统是ubuntu 12.04,已经安装好了apache和...Tips:如果没有这个命令,需要先安装svn,在ubuntu下直接使用apt-get安装就OK了: 复制代码 代码如下:$ sudo apt-get install subversion 关于php源码,如需要了解更多信息

    解决phpmyadmin中缺少mysqli扩展问题的方法

    一般在C:WINDOWS目录下。 找到 复制代码 代码如下: ;extension=php_msql.dll ;extension=php_mssql.dll extension=php_mysql.dll extension=php_mysqli.dll 需要开启哪个扩展,就把这一行前面的分号去掉就行,注意...

    php-stemmer:这个针对PHP的词干扩展提供了针对多种语言的词干功能

    可以按照介绍的有关使用phpize构建PHP扩展的说明进行安装,即可安装stemmer PHP扩展。 要构建此扩展,您需要安装PHP开发工具。 对于ubuntu / debian,您可以使用apt-get install php5-dev。 phpize命令用于为PHP...

    PHP识别二维码的方法(php-zbarcode安装与使用)

    说明:扩展需要依赖ImageMagick和zbar,安装前先安装这两个软件 1.安装ImageMagick(http://www.imagemagick.org/) yum install ImageMagick.x86_64 ImageMagick-devel.x86_64 2.安装zbar...

    php5-fastcgi:PHP FastCGI扩展

    正在安装以下这些说明用于在运行Ubuntu 64位服务器15.04的虚拟机上安装扩展。 sudo apt-get install ...

    libsmbclient-php:smbclient对PHP的扩展

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

    ubuntu lamp(apache+mysql+php) 环境搭建及相关扩展更新

    安装PHP sudo apt-get install php5 sudo apt-get install libapache2-mod-php5 sudo /etc/init.d/apache2 restart 测试: sudo vi /var/www/testphp.php 写入php works!保存退出vi。 然后在浏览器中输入http://1

    owl:由Zephir支持并作为C扩展提供PHP Web框架

    Owl是由语言提供支持的极其快速PHP框架,并作为C扩展提供。 这是一个开发分支,我们需要专注于文档,测试,修复和清理代码,因此我们需要您的帮助;) Linux: 视窗: 系统要求 要构建它,您需要满足以下要求: ...

    phpsci-carray:C语言支持的用于科学计算PHP库

    PHPSci CArray扩展PHPSci CArray是用于PHP的高性能科学计算库,该库以C语言开发并且基于原始的NumPy代码。 CArrays提供了PHP数组的可靠替代方案,并且与使用NumPy开发的代码兼容。 高性能索引和数据访问与PHP阵列...

    oc-bootstrapper:轻松引导一个新的October CMS项目

    Zip PHP扩展( sudo apt-get install php-zip ) 作曲家(通过工作目录中的全局二进制文件或composer.phar ) 经过测试 Ubuntu 15.10 Ubuntu 16.04 Ubuntu 18.04 OSX 10.11(El Capitan) 可通过Ubuntu Bash或

    rindow-openblas:用于一维和OpenBLAS的通用缓冲区PHP扩展和数学库

    要求PHP7.2或PHP7.3或PHP7.4或PHP8.0 Linux或Windows 10 OpenBLAS如何下载和设置预构建二进制文件您可以从每个发行版下载和使用针对Windows和Ubuntu的预构建二进制文件。 在“资产”链接中下载适用于您PHP版本的二...

    php-firebird:Firebird PHP驱动程序

    PHP Firebird扩展 构建驱动程序 在Linux上构建驱动程序 首先,我们必须满足一些要求。 这意味着我们需要安装phpize命令。 phpize命令用于为PHP扩展准备构建环境。 安装phpize命令。 这通常是通过使用系统的软件包...

    php中apc缓存使用示例

    关于windows系统,笔者以前曾在windows下安装过apc,只是运行不稳定,不晓得现在解决了没有。在windows下可以用wincache替代apc,微软自己开发的,非常稳定。 Tips:安装完成后,要记的重启下web服务器。 2、下载apc...

    php-memory-profiler:用于PHP的内存泄漏分析器

    php-memprof php-memprof是用于PHP的快速,准确的内存配置文件扩展程序,可用于查找内存泄漏... 在Debian或Ubuntu上,可以通过以下方式安装依赖项: # install libjudy dependency: apt install libjudy-dev 使用PECL

    gobject:适用于PHP的静态Gobject绑定

    然后,您可以使用phpize针对当前PHP安装来安装扩展 phpize ./configure make && make test && make install 如果要为PHP使用非标准位置 /path/to/phpize ./configure --with-php-config=/path/to/php-c

    php-fann:FANNPHP包装器(快速人工神经网络库)

    该扩展可以安装在Linux和Windows上。 Linux 在开始安装之前,请确保已在系统上安装libfann 。 它是大多数Linux发行版(搜索fann )中主存储库的一部分。 如果不是,则需要先安装它。 您可以从下载它,也可以从发行...

    Vim 配置包括所有的配置文件和扩展 适合windows linux

    压缩包里面.vim 对应$VIMRUNTIME/vimfiles,$VIMRUNTIME,就是vim的安装目录啦,默认安装在c:\program files/Vim 4。改.vimrc 为_vimrc 有任何指教,意见,批评等请发伊妹儿 michael.yang2000#gmail.com.

    zephlack:用 Zephir 编写的 Slack Messaging 扩展

    安装预建扩展从获取最新的扩展并将其放在以下目录中:######Ubuntu /usr/lib/php5/20.../zephlack.so ######CentOS /usr/lib64/php/modules/zephlack.so 将扩展添加到您的 php 配置中: extension=zephlack.so#####...

Global site tag (gtag.js) - Google Analytics