php 中phar包的使用教程详解

Phar简介:
Phar 归档的概念来自 Java™ 技术的 JAR 归档,它允许使用单个文件打包应用程序,这个文件中包含运行应用程序所需的所有东西。该文件不同于单个可执行文件,后者通常由编程语言生成,比如 C,因为该文件实际上是一个归档文件而非编译过的应用程序。因此 JAR 文件实际上包含组成应用程序的文件,但是考虑到安全性,不对这些文件进行仔细区分。Phar 扩展正是基于类似的理念,但是在设计时主要针对 PHP 的 Web 环境。同样,与 JAR 归档不同的是,Phar 归档可由 PHP 本身处理,因此不需要使用额外的工具来创建或使用。

Phar 扩展对 PHP 来说并不是一个新鲜的概念。它最初使用 PHP 编写并被命名为 PHP_Archive,然后在 2005 年被添加到 PEAR 库。然而在实际中,解决这一问题的纯 PHP 解决方案非常缓慢,因此 2007 年重新编写为纯 C 语言扩展,同时添加了使用 SPL 的ArrayAccess 对象遍历 Phar 归档的支持。自那时起,人们做了大量工作来改善 Phar 归档的性能。

创建 Phar
创建 Phar 文件需要执行若干步骤。所有步骤需要用到某种形式的 PHP 命令完成创建,因为不存在用于创建归档的独立工具。

下面这篇文章主要给大家介绍了关于PHP中phar包使用的相关资料,文中介绍的还是相对比较详细的,需要的朋友们下面来一起看看吧。

前言

PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。

首先需要修改php.ini配置将phar的readonly关闭,默认是不能写phar包的,include是默认开启的。

;phar.readonly => On

php.in开启Phar打包写入-slongzhang

创建一个phar压缩包

<?php

// 实例化Phar对象
$phar = new Phar('myPharTest.phar');

// 正则获取需要打包的php文件,参数1:文件路径; 参数2: 正则匹配文件名
$phar->buildFromDirectory(__DIR__.DIRECTORY_SEPARATOR.'myPharTest'.DIRECTORY_SEPARATOR, '/\.php$/');

// 打包方式 (Phar::GZ表示使用gzip来压缩此文件。也支持bz2压缩。参数修改为 PHAR::BZ2即可)
$phar->compressFiles(Phar::GZ);


$phar->stopBuffering();

// 设置启动文件
$phar->setStub($phar->createDefaultStub('index.php'));

然后在该文件的目录下新建一个“myPharTest”文件夹,放入你的php文件

注意

往外写日志或记录数据到本地,使用getcwd()函数

<?php
date_default_timezone_set("PRC");

$result = array(
    'getcwd'                                    => getcwd(), // 当前工作目录,当前运行的xxx.php或xxx.phar目录
    '__FILE__'                                  => __FILE__, // 当前文件的绝对路径
    '__DIR__'                                   => __DIR__, // 当前脚本目录
    '$_SERVER["SCRIPT_FILENAME"]'               => $_SERVER["SCRIPT_FILENAME"], // 当前执行脚本文件名
    'DOCUMENT_ROOT'                             => $_SERVER["DOCUMENT_ROOT"], // 当前运行脚本所在的文档根目录。在服务器配置文件中定义

);

print_r($result);

phar读写文件问题--slongzhang

参考资料

Guess you like

Origin blog.csdn.net/qq_35606400/article/details/120718653
php