PHP的學習 使用phar打包

2021-09-07 08:04:52 字數 1261 閱讀 6514

前段時間寫了幾個php的指令碼,但是因為指令碼的專案是基於composer安裝的,給別人使用的時候不太方便,就希望能夠打包成乙個能直接使用的檔案。

搜尋了一下,發現可以使用phar打包。

假設我們有如下乙個專案

入口檔案是index.php,打包前的命令如下:

php index.php
再新增打包指令碼之前,需要先修改一下php的配置,將phar.readonly改為off,預設為on,表示唯讀,在php.ini檔案中:

[phar]

; phar.readonly = off

編寫構建phar包的指令碼,命名為build.php

<?php 

$exts = ['php']; // 需要打包的檔案字尾

$dir = __dir__; // 需要打包的目錄

$file = 'test.phar'; // 包的名稱, 注意它不僅僅是乙個檔名, 在stub中也會作為入口字首

$phar = new phar(__dir__ . '/' . $file, filesystemiterator::current_as_fileinfo | filesystemiterator::key_as_filename, $file);

// 開始打包

$phar->startbuffering();

// 將字尾名相關的檔案打包

foreach ($exts as $ext)

// 把build.php本身摘除

$phar->delete('build.php');

// 設定入口

$phar->setstub($phar->createdefaultstub('index.php'));

$phar->stopbuffering();

// 打包完成

echo "finished \n";

執行php build.php就可以看到生成的test.phar包了。

執行php test.phar就跟之前執行php index.php的效果一樣了。

php中phar包的使用

使用phar上線你的**包

php靜態變數與方法與phar的使用

本節用類與靜態變數改造之前的例子 php根據命令列引數生成配置檔案 ghostinit.php class ghostinit static function make ghost usr bin php require ghostinit.php result if argc 2 echo res...

php新的漏洞利用技術 phar 解析

概要來自secarma的安全研究員sam thomas發現了一種新的漏洞利用方式,可以在不使用php函式unserialize 的前提下,引起嚴重的php物件注入漏洞。這個新的攻擊方式被他公開在了美國的blackhat會議演講上,演講主題為 不為人所知的php反序列化漏洞 它可以使攻擊者將相關漏洞的...

Pyinstaller的打包使用

toc 1,pyinstaller的安裝 執行 pip install pyinstaller 2,常用打包方式 單一檔案,pyinstaller f i iconame.ico filename.py 非單一檔案,pyinstaller d i iconame.ico filename.py 3,...