前段時間寫了幾個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,...