C语言实现PHP自定义扩展

1. 目的

一个项目核心代码用C语言来编写,PHP环境建立的时候编译成PHP扩展,达到保证项目商业机密不外泄

2. PHP源码安装

2.1 环境依赖安装

# 依赖安装
yum install -y gcc libxml2 *openssl* libcurl* libjpeg* libpng* freetype* libzip* libmcrypt*

2.2 源文件下载

# 进入这个目录,把PHP源码下载到这里
cd /usr/local/src  
 
# 下载源码
wget -c https://www.php.net/distributions/php-7.1.29.tar.gz

2.3 源文件解压安装

# 解压
tar -zxvf php-7.1.29.tar.gz

# 运行configure可执行文件
./configure --prefix=/usr/local/php --with-config-file-path=/etc

# 编译和安装
make && make install

# 设置成全局
ln -s /usr/local/php/bin/php /usr/local/bin/php

2.4 常用查看PHP命令

# 查看php.ini位置
php --ini

# 查看php扩展
php -m

# 查看版本
php -v

# 查看swoole扩展是否成功
php --ri swoole

# 配置php环境变量
vim ~/.bash_profile
加入:alias php=/usr/local/php/bin/php 保存
source ~/.bash_profile

# 查看具体extension_dir
php -i| grep extension_dir

3. C开发PHP扩展

3.1 进入ext目录

cd /usr/local/src/php-7.1.29/ext

3.2 生成buddha模块

./ext_skel --extname=buddha
To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/buddha/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-buddha
5.  $ make
6.  $ ./sapi/cli/php -f ext/buddha/buddha.php
7.  $ vi ext/buddha/buddha.c
8.  $ make

3.3 执行步骤

cd ..

vim ext/buddha/config.m4

在这里插入图片描述

  • 把16、17、18三行的dnl去掉并保存
./buildconf --force
cd ext/buddha

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

执行make,之后会在./modules/目录下生成buddha.so文件

执行make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
php -m 

vim /etc/php.ini
vim /usr/local/src/php-7.1.29/ext/buddha/buddha.c

在这里插入图片描述

<?php

	$result =  confirm_buddha_compiled('buddha');
	var_dump($result);

php index.php
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员buddha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值