1. 云栖社区>
  2. PHP教程>
  3. 正文

编写php扩展

作者:用户 来源:互联网 时间:2017-12-01 11:30:26

编写php扩展 - 摘要: 本文讲的是编写php扩展, 在日常的php开发工作中,一些php代码逻辑运行效率低下,此时如果把程序用c重写之后再编译到php中会时程序会运行的飞起 而且一些php自带的危险函数 为了安全可以禁用之后再用c重写 重命名一下就起到了安全作用 现在教大家编写自己php

在日常的php开发工作中,一些php代码逻辑运行效率低下,此时如果把程序用c重写之后再编译到php中会时程序会运行的飞起 而且一些php自带的危险函数 为了安全可以禁用之后再用c重写 重命名一下就起到了安全作用
现在教大家编写自己php扩展 重写php的system命令

进入php源码目录

cd ext/#执行php扩展构造器脚本叫ext_skel./ext_skel --extname=mysys#此时当前目录下生成了mysys目录cd mysys

1、、
vim config.m4
dnl 是注释符是注释符
取消PHP_ARG_ENABLE这行及其以下两行的注释 mysys是你的扩展名

2、
vim mysys.c
把PHP_FE(confirm_mysys_compiled, NULL)改成
PHP_FE(mysys, NULL)
更改PHP_FUNCTION的c函数

PHP_FUNCTION(mysys){    char *arg = NULL;    int arg_len, len;    char string[256];    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&arg, &arg_len) == FAILURE) {        return;    }    system(arg);}

3、
vim php_mysys.h
把PHP_FUNCTION这行改成(mysys);

cd ../../回到php源码的根目录phpize./configure --with-php-config=/usr/local/bin/php-configmake && make install

测试代码

<?php    // 加载刚建立的模块,需要开启dl命令enable_dl = On 生产环境不建议开启    dl("mysys.so");    // 调用函数    mysys('ls');

如果测试通过就可以把自己写的扩展编译到php中
回到PHP源代码包根目录

./buildconf --force./configure --enable-mysys #... 也许你还有其他选项make && make install

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。