php 中phar包的使用教程详解
修改配置文件:
vim /usr/local/php/etc/php.ini
[Phar] phar.readonly = Off
压缩:
a. 创建压缩脚本:
vim compress.php
<?php $exts = array( '*', ); $dir = __DIR__; $file = 'test.phar'; $phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file); $phar->startBuffering(); foreach ($exts as $ext) { $phar->buildFromDirectory($dir, '/\.' . $ext . '$/'); } $phar->delete('build.php'); $phar->setStub($phar->createDefaultStub('index.php')); $phar->stopBuffering(); echo "打包完成".PHP_EOL;
b. 执行压缩脚本:
php /home/lee/php/compress.php
c. 查看压缩包:
ll /home/lee/php
解压:
a. 创建解压脚本:
vim /home/lee/php/depress.php
<?php define('ROOT',__DIR__); $dir = ROOT.'/extract'; if(!is_dir($dir)){ @mkdir($dir); } $phar = new Phar(ROOT.'/test.phar'); $phar->extractTo($dir,null,true); echo "解压完成".PHP_EOL;
b. 执行解压脚本:
php /home/lee/php/depress.php
c. 查看解压文件:
ll /home/lee/php/extract
相关推荐
-
PHP中phar包的使用教程
前言 PHP5.3之后支持了类似Java的jar包,名为phar.用来将多个PHP文件打包为一个文件. 首先需要修改php.ini配置将phar的readonly关闭,默认是不能写phar包的,include是默认开启的. phar.readonly => On 创建一个phar压缩包 <?php $phar = new Phar('swoole.phar'); $phar->buildFromDirectory(__DIR__.'/../', '/\.php$/'); $phar-&g
-
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
在US BlackHat 2018大会上,安全人员证明,攻击者不仅可以利用PHAR包发动RCE攻击,而且,通过调整其二进制内容,他们还可以将其伪装成一幅图像,从而绕过安全检查. 在本文中,我们来看看第二点是如何做到的. 背景知识 在US BlackHat 2018大会期间,Sam Thomas召开了一个关于在PHP中利用 phar:// 流包装器来实现针对服务器的代码执行攻击的研讨会( 幻灯片). 在运行PHAR包时,由于PHP会对其内容进行反序列化,从而允许攻击者启动一个PHP对象包含链.其中
-
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
前言 最近因为工作需要要使用PHP 7,所以从网上找教程进行安装, 结果编译没问题, 安装的时候报了错误. 错误如下 cp -pR -f phar.phar /usr/local/php7/bin/phar cp: cannot stat 'phar.phar': No such file or directory make: *** [install-pharcmd] Error 1 解决方法很简单: find . -name 'phar.phar' 找到 phar.phar 文件, 移动或者
-
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
本文实例讲述了PHP开发之归档格式phar文件概念与用法.分享给大家供大家参考,具体如下: 一个php应用程序往往是由多个文件构成的,如果能把他们集中为一个文件来分发和运行是很方便的,这样的列子有很多,比如在window操作系统上面的安装程序.一个jquery库等等,为了做到这点php采用了phar文档文件格式,这个概念源自java的jar,但是在设计时主要针对 PHP 的 Web 环境,与 JAR 归档不同的是Phar 归档可由 PHP 本身处理,因此不需要使用额外的工具来创建或使用,使用ph
-
php 中phar包的使用教程详解
修改配置文件: vim /usr/local/php/etc/php.ini [Phar] phar.readonly = Off 压缩: a. 创建压缩脚本: vim compress.php <?php $exts = array( '*', ); $dir = __DIR__; $file = 'test.phar'; $phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | File
-
在 CentOS 7 中安装 MySQL 8 的教程详解
准备 本文环境信息: 软件 版本 CentOS CentOS 7.4 MySQL 8.0.x 安装前先更新系统所有包 sudo yum update 安装 1. 添加 Yum 包 wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm # 或者 wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm sudo yum up
-
java 中maven pom.xml文件教程详解
maven pom.xml文件教程详解,具体内容如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x
-
使用go module导入本地包的方法教程详解
go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go modules 功能已经被正式推荐在生产环境下使用了. 这几天已经有很多教程讲解如何使用 go module ,以及如何使用 go module 导入gitlab私有仓库,我这里就不再啰嗦了.但是最近我发现很多小伙伴在群里问如何使用 go module 导入本地包,作为初学者大家刚开始接触package的
-
android studio编译jar包或者aar包的方法教程详解
1. 在原有工程目录右键-> new ->Module->: 2. 选择library: 3. 一路next,最后finish: 4. 在新生成的lib module下的build.gradle中添加如下代码: task makeJar(type: Copy) { //删除存在的 delete 'build/outputs/aar/plugin-release.aar' delete 'libs/' //设置拷贝的文件来源 from('build/outputs/aar/') ////新
-
在vue中安装使用vux的教程详解
最近因为的工作的原因在弄vue,从后端弄到前端之前一直用js,现在第一次接触vue感觉还挺有意思的,就是自己太菜了,这个脑子呀....不太够用.....页面设计用了一个叫vux的东西,vux可以提供一些组件,用起来还是比较方便的,因为自己比较菜吧,所以有很多东西还是不太深入了解...比如对vux自带样式的修改..希望有大牛看到的话也可以多多指点... 今天就记录一下vux的安装使用吧...... 首先自己要先新建一个vue项目,cmd进入到项目目录下,进行安装 1.在项目目录下安装vux(也可以
-
vue-cli3中vue.config.js配置教程详解
前言 vue-cli3推崇零配置,其图形化项目管理也很高大上. 但是vue-cli3推崇零配置的话,导致了跟之前vue-cli2的配置方式都不一样了. 别名设置,sourcemap控制,输入文件位置和输出文件位置和输出的方式,压缩js控制,打包webapck日志分析,externals忽略配置(外部引入),调试的端口配置,proxy接口配置等等的. 有时候还需要我们配置的,因为官方推荐的,并不适用于我们平时的开发所用的. 所以,我的vue.config.js配置是下面这样的.还有一个改hash的
-
Python 中Django安装和使用教程详解
一.安装 一般使用cmd 安装就可以 手动安装通过下载方式 django官方网站:https://www.djangoproject.com/ python官方仓库:https://pypi.python.org/pypi/Django 二.配置使用 1.通过cmd新建一个项目,我是在桌面新建 上面命令会在桌面新建pythonDjango文件夹,在里面会生成如下图两个文件 manage.py:命令行工具,可以用多种方式与该django项目进行交互: 在pythonDjango文件夹里面有4个.p
-
python中seaborn包常用图形使用详解
seaborn包是对matplotlib的增强版,需要安装matplotlib后才能使用. 所有图形都用plt.show()来显示出来,也可以使用下面的创建画布 fig,ax=plt.subplots() #一个画布 fig,(ax1,ax2) = plt.subplots( ncols=2) #两个画布 1)单个特征统计图countplot sn.countplot(train.mnth)#离散型特征可使用,描述样本点出现的次数. 2)单个特征统计图distplot sn.distplot(t
-
Python中itertools模块的使用教程详解
目录 itertools模块的介绍 无限迭代器(Infinite Iterators) 组合迭代器(Combinatoric Iterators) 有限迭代器(Iterators Terminating on the Shortest Input Sequence) itertools模块的介绍 在Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值.因此,迭代器可以用来存储无限大的序列,这样我们就不用把他一次性放在内存中,而只在需
随机推荐
- Oracle知识整理笔记
- login.exe HGFS木马下载器的手动查杀方法
- java多线程编程之管道通信详解
- javascript滚轮事件基础实例讲解(37)
- 详解jQuery事件
- JavaScript面向对象的两种书写方法以及差别
- Android NoSuchFieldError解决办法
- 使用DNode实现php和nodejs之间通信的简单实例
- CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
- WSH 5.6(脚本宿主) 的新增功能
- flash 系统字体显示问题
- 实例详解jQuery Mockjax 插件模拟 Ajax 请求
- jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
- dedecms负载性能优化实例,三招让你的dedecms快10倍以上第1/2页
- 详解vue 项目白屏解决方案
- python多进程间通信代码实例
- 易语言地下城与勇士辅助顺图类源码
- Nuxt配合Node在实际生产中的应用详解
- 易语言将画板中的图片输出为指定宽度和大小的图片
- 使用python的pyplot绘制函数实例