一种PHP源码保护方法与流程

文档序号:11677289阅读:4426来源:国知局
一种PHP源码保护方法与流程

本发明涉及一种php源码保护方法,属于php源码保护的技术领域。



背景技术:

php的opcode缓存机制:解释执行php脚本时,会经过五个步骤,参见图1:php解释器从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码(称为opcode),最后执行opcode。每一次请求php脚本都会执行一遍以上步骤,如果php源代码没有变化,则opcode也不会发生变化。因此,如果将opcode缓存下来,以后直接访问缓存的opcode,可以加快php的执行效率。

启用opcode缓存机制之后的php脚本执行流程图参见图2。opcode缓存机制主要是为了提升php的执行效率而提出的。

共享内存缓存(shmcache)和文件缓存(filecache):根据opcode的储存方式,php的opcode缓存可分为两类:共享内存缓存和文件缓存。

php7之前的opcache只支持共享内存缓存,不支持文件缓存。php7新增了文件缓存功能,在储存共享内存缓存的同时,可将每个php源文件生成的opcode导出为相应的php文件对应的opcode文件,后缀为.bin。

默认情况下内存缓存的优先级高于文件缓存,当发起php脚本请求时,php解释器首先检查内存缓存中是否存在当前所请求的php脚本对应的opcode,若有,则直接执行。若没有,则到指定目录中寻找当前所请求的php脚本对应的opcode文件,若存在相应的opcode文件,则将该文件导入内存中,执行。否则,说明内存缓存和文件缓存中均不存在相应php脚本的opcode,需要重新解析文件。

开启了内存缓存和文件缓存功能的php7执行php脚本的流程见图3。如果文件缓存目录中存在对应php脚本的opcode,php解释器不会重新解释php源文件,因而完全可以删掉原php文件中的内容而不影响php文件的执行。



技术实现要素:

针对以上技术问题,本发明提出了一种php源码保护方法。本发明利用php7文件缓存功能实现php源码保护的方法,该方法简单易行并且可靠性较高。

本发明的技术方案如下:

一种php源码保护方法,包括:利用软件php-7的opcache模块提供的函数opcache_compile_file实现导出opcode文件;当部署到目标服务器时,保留项目中内容被清空的php脚本。由于部署到目标服务器上的是空白的php文件和缓存文件,因此可以起到保护php源码的作用。

根据本发明优选的,所述软件php-7的配置如下:加载fpm模块和opcache模块。所述加载fpm模块:安装时,增加--enable-fpm,并进行相关配置,目的是以php-fpm的模式运行php;所述加载opcache模块:安装时,增--enable-opcache,并进行相关配置,目的是启用opcode缓存功能。

根据本发明优选的,还包括将软件nginx-1配置成:支持php-fpm的方式。

根据本发明优选的,所述软件nginx-1的版本为nginx-1.7.10以上。

本发明的技术优势在于:

本发明所述的一种php源码保护方法,将opcode缓存下来,以后直接访问缓存的opcode,加快php的执行效率,即利用php7文件缓存功能实现php源码保护的方法,该方法简单易行并且可靠性较高。

附图说明

图1是现有技术中,一般的php解释执行示意图;

图2是启用opcode缓存机制之后php解释执行示意图;

图3是同时启用shmcache和filecache的php解释执行示意图;

图4是在本发明所述方法中,php源码保护流程示意图;

图5是目标服务器上执行php文件的流程示意图。

具体实施方式

下面结合实施例和说明书附图对本发明做详细的说明,但不限于此。

实施例、

一种php源码保护方法,包括:利用软件php-7的opcache模块提供的函数opcache_compile_file实现导出opcode文件;当部署到目标服务器时,保留项目中内容被清空的php脚本。由于部署到目标服务器上的是空白的php文件和缓存文件,因此可以起到保护php源码的作用。

所述软件php-7的配置如下:加载fpm模块和opcache模块。所述加载fpm模块:安装时,增加--enable-fpm,并进行相关配置,目的是以php-fpm的模式运行php;所述加载opcache模块:安装时,增--enable-opcache,并进行相关配置,目的是启用opcode缓存功能。

所述php源码保护方法还包括将软件nginx-1配置成:支持php-fpm的方式。所述软件nginx-1的版本为nginx-1.7.10以上。

本发明所述方法的具体源代码如下:

(1)关闭php-fpm

killallphp-fpm

(2)创建opcode缓存目录

mkdir–m777/usr/local/php7/opcache

(3)修改php.ini配置,开启opcache功能

zend_extension=opcache.so

opcache.enable=1

opcache.enable_cli=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.validate_timestamps=0

opcache.revalidate_freq=60

opcache.fast_shutdown=1

opcache.file_cache=/usr/local/php7/opcache

(4)创建一个php脚本,该脚本的作用是将指定目录下的所有php文件导出成相应的opcode文件,同时将原php文件中的内容清空。这里指定目录需设置为web服务器根目录。上述例子中为/usr/local/www。

假设上述脚本命名为opcache_compile_file.php

执行脚本:./phpopcache_compile_file.php

(5)设置缓存目录所有者为php-fpm用户

chown–rwww:www/usr/local/php7/opcache

(6)启动php-fpm

/usr/local/php7/sbin/./php-fpm

这时,即使web根目录下的php文件中的内容已经被清空,由于文件缓

存的存在,依然可以访问原php文件对应的页面。

(7)部署到目标服务器

将/usr/local/php7/opcache和/usr/local/www部署到目标服务器,/usr/local/php7/opcache的部署路径需要与目标服务器中php7中设置的文件缓存路径一致,/usr/local/www的部署路径需与目标服务器的web根目录设置一致。

当前第1页1 2 
网友询问留言 已有1条留言
  • 访客 来自[中国] 2020年09月25日 08:06
    0
1