PHP的學習--使用phar打包


前段時間寫了幾個PHP的腳本,但是因為腳本的項目是基於composer安裝的,給別人使用的時候不太方便,就希望能夠打包成一個能直接使用的文件。

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

假設我們有如下一個項目

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

php index.php

再添加打包腳本之前,需要先修改一下PHP的配置,將phar.readonly改為Off,默認為On,表示只讀,在php.ini文件中:

[Phar]
; http://php.net/phar.readonly
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) {
    $phar->buildFromDirectory($dir, '/\.' . $ext . '$/');
}
// 把build.php本身摘除
$phar->delete('build.php');
// 設置入口
$phar->setStub($phar->createDefaultStub('index.php'));
$phar->stopBuffering();
// 打包完成
echo "Finished {$file}\n";

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

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

參考摘錄:

PHP中phar包的使用
使用phar上線你的代碼包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM