用PHP调用C扩展整个配置过程(好辛苦呀)

PHP-Screw Plus:基于AES256的PHP代码加密保护方案 简介:PHP-Screw Plus是一款面向PHP开发者的开源加密扩展,采用金融级AES256对称加密算法,有效防止源代码被反编译与非法使用。该工具通过自定义密钥对PHP文件进行加密,确保只有持有正确密钥的用户才能解密运行,保障软件版权、商业机密及云环境下的代码安全。其加密过程不影响执行效率,安装集成简便,支持定制化开发,适用于软件分发、企业内部项目和云服务等多种场景,是中小型企业及个人开发者理想的代码安全解决方案。 阅读详情

今天终于把C扩展加入到PHP中了,并且可以调用,废话就不说了,看下文。

一、必须先要安装Apache和mysql,这两个的安装过程我就不说了。

二、安装PHP

#mkdir /usr/local/php5

#./configure      --prefix=/usr/local/php5     --with-apxs2=/usr/local/apache2/bin/apxs     --with-mysql=/usr/lib64/mysql      --with-config-file-path=/usr/local/php5

#make
#make install

三、查看php是否安装成功
在apache的htdocs里建立一个文件名为:index.php
写入内容 <?phpinfo()?>
保存
浏览http://localhost/index.php
显示正确,安装成功。

四、创建自己的c php扩展
进入到php的安装包的ext目录下
#cd /usr/software/php5-3.2/ext
#./ext_skel  --extname=mysqlc                            注意:这里是创建里扩展库的名字,创建后,会在ext下有一个mysqlc的目录
#cd mysqlc


五、进行扩展库的基础修改和编码操作
#vi config.m4

原始
dnl PHP_ARG_ENABLE(mysqlc, whether to enable mysqlc support,
dnl Make sure that the comment is aligned:
dnl [  --enable-mysqlc           Enable mysqlc support])

修改后的
PHP_ARG_ENABLE(mysqlc, whether to enable mysqlc support,
Make sure that the comment is aligned:
[  --enable-mysqlc           Enable mysqlc support])

#vi mysqlc.c

在PHP_FUNCTION(confirm_mysqlc_compiled)函数下面追加

PHP_FUNCTION(mysqlc){
     zend_printf("helloword c!!");
}

修改前
const zend_function_entry mysqlc_functions[] = {
    PHP_FE(confirm_mysqlc_compiled,    NULL)        /* For testing, remove later. */
    {NULL, NULL, NULL}    /* Must be the last line in mysqlc_functions[] */
};

修改后
const zend_function_entry mysqlc_functions[] = {
    PHP_FE(confirm_mysqlc_compiled,    NULL)        /* For testing, remove later. */
    PHP_FE(mysqlc,NULL)
    {NULL, NULL, NULL}    /* Must be the last line in mysqlc_functions[] */
};

#vi php_mysqlc.h
在PHP_FUNCTION(confirm_mysqlc_compiled);下面追加

PHP_FUNCTION(mysqlc);

到这里,基本上你的扩展库就写完了,下面就要开始进行生成和安装了

五、生成扩展库
当前目录在/usr/software/php5-3.2/ext/mysqlc

#/usr/local/php5/bin/phpize

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

#make

#make install


执行完毕后,将会在/usr/local/php5/lib/php/extensions/no-debug-non-zts-版本号/mysqlc.so文件

把mysqlc.so文件复制到apache下的modules去

四、进行配置php.ini

然后进入到/usr/local/php5看有没有php.ini,

如果没有,复制安装包里的php.ini-production改名为php.ini

进入php.ini设置
1、short_open_tag = On
2、extension_dir = "/usr/local/apache2/modules/"
3、追加一个extension=mysqlc.so
保存php.ini,重启apache


OK,扩展库可以使用了

PHP高性能组合框架(C扩展) 1、考虑之前做的项目都是CI框架,如果全部推翻,将会有超级多的东西需要修改,所以我将CI引擎替换,但是SuperCI对外提供的调用方式不变, 2、框架支持4层架构,Controller、Business、Dao、View 层。 3、首先我将CI框架的路由部分抽取出来, 替换成Yaf。 4、然后将CI的数据库ORM操作底层引擎替换成Phalcon, 然而这并不是一个全部的Phalcon, 而是将Phalcon所有其它模块全部删除,仅保留DB操作部分,重新编译之后生成的ORM引擎,替换到CI的数据库底层操作,相当于给五菱宏光装上了悍马的发动机,数据库操作性能能提升2倍。 5、代码模块分离,并加入自己写的模块、类库、配置加载类。 6、加入自己的日志记录类 Logger::get_instance("log_name"): 7、加入redis的通用实例化加载方法 Loader::redis("default"); 8、替换 PHP 5 到 PHP 7 , 开启代码缓存opcache。 9、支持Redis主从 立即下载

相关推荐

使用C语言来扩展PHP,写PHP扩展dll

将c代码写成php的拓展库,实现php对c语言的调用

php调用c 的三种方式,php调用c-c++的一种方式

php调用c/c++有很多方式,最常用的是通过tcp或者http去调用,通过发送请求去调用c/c++编写的cgi/fastcgi来实现,另外php还有一种直接执行外部应用程序的方式,这种方式会影响到系统安全,容易被攻击者利用,所以使用的时候要谨慎处理好用户输入php执行外部二进制命令的函数有好几个,比如exec和passthru,并且passthru函数能执行命令并且可以返回外部命令的输出,所以本...

weixin_42492543的博客 1162

PHP中调用C/C++制作的动态链接库的教程

一般而言,php速度已经比较快,但是,对于一些较高级开发者而言,如果想要追求更快的速度,那毫无疑问可以通过自己写c代码,并编译为动态链接库(常为.so文件),然后php通过创建一个新的扩展(extension),并在扩展里调用该.so文件,同时对外暴露出php函数接口。 在实际使用中,只要调用该函数接口,即可使用底层更快速的c函数服务。 一、动态链接库(shared) 动态链接库的文件名后缀通常是 “.so”。在Windows系统中,其文件名后缀是”.dll”。 程序如果是和动态连接库进行链接(link),程序运行时需要能够找到相应的动态链接库文件。 使用动态链接库存编译的程序在运行时要求用户

php c 扩展,实现一个PHP的C扩展 [入门篇]

最近想尝试写PHP的C扩展,在《PHP7底层设计与源码实现》书中有一个PHP扩展的例子,这里动手实现了一下。准备LinuxPHP7PHP7源码包 点击下载预览Linux查看文本行数可以使用wc -l查看,现在需要将这一功能实现为PHP的自带功能。假如有这样一个文本,中间有空行,要分析该文本行数,有些时候需要让函数输出3,有些时候让函数输出7(包括空行),可以通过配置php.ini文件保存这一配置。...

weixin_35135581的博客 748

Unity技能系统核心:从理论到实践构建可扩展的Buff管理器

本文深入探讨了Unity游戏开发中构建可扩展技能系统的核心——Buff管理器。通过剖析三层架构(数据、逻辑、渲染)与独立组件管理模式,提供了从Buff数据定义、管理器核心实现到可视化编辑器搭建的完整实践方案,旨在解决技能系统维护难题,提升开发效率与代码质量。

weixin_29002209的博客 253

Linux yum源配置以及yum命令讲解

前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu

九派Linux的博客 2283

PHP调用C语言实现接口方法

环境准备 环境: CentOS Linux release 7.3.1611 (Core) PHP 5.4.16 安装php、查看php版本 # yum install php php-devel # php -v so 动态库封装 [root@localhost hello]# cat hello.c #include <stdio.h> int hello_add (int a, int b) { return a+b; } 生成动态库: # gcc -fPI.

huang_1988的博客 2926

无源定位之时差估计的精确时差估计算法(ETDE)及MATLAB实现程序

时差估计算法之精确时差估计(ETDE)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想

伊谢尔伦的林中小路 4254

利用php调用C语言 扩展函数

<br />第一步. 生成需要调用的so文件<br />1.  首先做一个简单的so文件:<br />/** * hello.c <br />* To compile, use following commands:<br /> *   gcc -O -c -fPIC -o hello.o hello.c<br />  *   gcc -shared -o libhello.so hello.o <br />*/<br />int hello_add(int a, int b)<br />{<br />  

hn3e21的专栏 829

MoveIt控制睿尔曼RM65机械臂:从仿真到实机的3种控制模式对比

本文详细解析了使用MoveIt框架控制睿尔曼RM65机械臂的三种核心模式:拖动规划、目标姿态规划和Python API控制,从Gazebo仿真到实机部署的完整实现路径。通过ROS环境配置、控制参数优化及实机过渡技术,为工业自动化和机器人研究提供实用指南。

727

不使用工具箱,通过MATLAB纯编程实现lstm网络的训练过程

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 1013

php调用 c#、c++写的com组件

php调用com组件

weixin_41915066的博客 1055

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 203

用PHP调用C扩展整个配置过程(辛苦呀)

今天终于把C扩展加入到PHP中了,并且可以调用,废话就不说了,看下文。一、必须先要安装Apache和mysql,这两个的安装过程我就不说了。二、安装PHP#mkdir /usr/local/php5#./configure      --prefix=/usr/local/php5     --with-apxs2=/usr/local/apache2/bin/apxs     --with-my

qq_16490557的专栏 373

Unity内存优化:从崩溃到流畅的终极指南

Emscripten 为 WebAssembly 设定的内存布局(Static、Stack 和 Heap)为开发者提供了一个清晰的内存管理框架。理解这些内存区域的特性和用途,有助于开发者在 WebGL 项目中更有效地管理内存,优化性能,减少内存使用峰值。在 Unity WebGL 中,Dynamic Memory 是 UnityHeap 的主要组成部分,负责存储游戏运行时所需的各种数据。Dynamic Memory 主要分为两类:Managed Memory 和 Native Memory。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 358

从LLM到Agent:智能体核心范式与认知架构全景解读

摘要: Agent技术正成为AI领域的新焦点,其核心在于通过外部认知基础设施(如记忆、工具、协议等)将大语言模型(LLM)从“生成文本”升级为“执行任务”的智能体。2026年的研究显示,Agent能力提升的关键已从模型本身转向外部化架构,如Harness工程(执行框架)和认知解耦(如ORCA框架)。当前Agent框架生态呈现多元化竞争(如LangGraph、AutoGen、CrewAI),但可观测性与治理仍是薄弱环节。未来竞争壁垒将取决于外部基础设施的完善程度,而非单纯模型性能。

2601_95807009的博客 50

php 扩展开发的好处,关于PHP扩展开发(收藏)

一、Linux shell命令:ls –lh 查看文件大小du –a 查看文件及文件夹大小-------------------------- nginx ----------------------------------------------------1. 把nginx目录下所有文件拷贝到 ngi 目录下cp -R /etc/nginx/. /usr/share/nginx/h...

weixin_33603067的博客 152

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VS Code配置c/c++环境

目录 一句话总结 准备工作 下载visual studio code 安装MinGW-w64 什么是 MinGW? MinGW-w64与MinGW的区别 为什么使用MinGW-w64 注意: 下载、安装、配置MinGW-w64 验证 安装扩展(extension) 安装C/C++ 创建工作区,用于存放代码 配置C/C++ 配置编译器路径 创建生成任务 配置debug调试设置 安装Code Runner 配置Code Runner 配置把文件编译后存放到指定的文件夹下 官网参数说明 一句话总结 1. 去官网下

G_66_hero的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

长沙php课程哪个好,长沙php培训中心哪个好(php代码如何调用)

长沙php培训中心哪个好,看着好多关于长沙php培训的内容,它带着php培训哪些好处,php怎么用,php代码如何调用,php代码如何加密,php为啥遭到它行鄙视,PHP的特点有哪些走来了。php培训哪些好处各行各业的岗位都演绎着很重要的角色,今天我们就来说一下关于PHP到底演绎着什么样的角色呢,在IT行业中PHP也是很重要的一部分,很多人觉得程序员这个工作枯燥、乏味。这可能就是:“外行看热闹,内...

weixin_39989980的博客 197

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PHP环境配置以及相关问题

为什么80%的码农都做不了架构师?>>> ...

weixin_34206899的博客 150

dzsoft+php,php工具

PHP扩展加密工具XLoad可以帮助用户对PHP代码进行完美的加密处理,该工具采用多种代码保护方案不可还原,支持各种编码PHP文件脚本,拥有独家专利算法的用户专属引擎加密功能,彻底加密源代码,加密后的网站修改极其方便,只要打开软件即可加密。软件说明辛苦开发出来的PHP程序,如何来保证它的源码安全、知Swoole是纯C语言的并行网络通信引擎,有着可用性非常高的内置协程,用户可以使用完全同步的代码来实...

weixin_32286189的博客 209

用Zend Encoder加密PHP文件和PHP 优化配置

在发布一个你写好的PHP程序时,你是不是担心自已辛苦写出来的成果会被别人占为已有呢?其实我们可以用Zend Encoder为我们的PHP文件加上一层保护壳。 软件版本:2.0.1软件大小:10.2M适用平台:Win9X/2000/XP官方网址:http://www.zend.com/store/products/zend-encoder.php软件的使...

weixin_30901729的博客 106

Unity编辑器扩展

Unity,作为一款功能强大的游戏开发引擎,不仅提供了丰富的核心功能,还允许开发者通过编写编辑器扩展来进一步定制和优化开发流程。通过以上的解析和示例,你可以开始着手开发自己的Unity编辑器扩展,以优化你的游戏开发流程。首先,确保你的开发环境已经安装了Unity编辑器和相应的Unity编辑器脚本API。Unity编辑器API是开发编辑器扩展的核心。在Unity编辑器中,你可以通过创建一个新的C#脚本来开始你的扩展项目。为你的扩展提供清晰的文档和用户支持,这有助于其他开发者更好地理解和使用你的扩展。

Python老吕的博客 1483

PHP源码加密实战:小猫咪系统V1.41核心原理与部署指南

在软件开发和分发过程中,源码保护是保障知识产权和实现商业授权控制的关键环节。其核心原理是通过技术手段,将可读的源代码转换为难以直接逆向的形态,同时确保其在授权环境下能正常执行。这通常涉及加密算法、运行时环境校验和授权管理等多重技术。从技术价值看,有效的源码保护不仅能防止代码被非法复制和篡改,还能支撑按时间、域名或客户进行精细化授权的商业模式,尤其适用于商业PHP应用、插件和私有化部署场景。在PHP生态中,通过编写C语言扩展实现运行时加载与解密,结合AES等对称加密算法对opcode进行保护,是兼顾性能与安全

culi3182的博客 409
上一篇: curl post and get
下一篇: php调用dll经验小结
hn3e21
博客等级 码龄17年 9粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值