2024 年 PHP Conference Japan

Phar::__construct

(PHP 5 >= 5.3.0,PHP 7,PHP 8,PECL phar >= 1.0.0)

Phar::__construct建構 Phar 封存物件

說明

公開 Phar::__construct(字串 $filename, 整數 $flags = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?字串 $alias = null)

參數

filename

現有 Phar 封存或待建立封存的路徑。檔案名稱的副檔名必須包含 .phar。

flags

要傳遞給父類別 RecursiveDirectoryIterator 的旗標。

alias

此 Phar 封存應在呼叫串流功能時使用的別名。

錯誤/例外

如果呼叫兩次,則拋出 BadMethodCallException;如果無法開啟 phar 封存,則拋出 UnexpectedValueException

範例

範例 #1 Phar::__construct() 範例

<?php
try {
$p = new Phar('/path/to/my.phar', FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
'my.phar');
} catch (
UnexpectedValueException $e) {
die(
'無法開啟 my.phar');
} catch (
BadMethodCallException $e) {
echo
'理論上,這不會發生';
}
// 現在可以運作了
echo file_get_contents('phar://my.phar/example.txt');
// 而且就像我們輸入了以下內容一樣可以運作
echo file_get_contents('phar:///path/to/my.phar/example.txt');
?>

新增註解

使用者貢獻的註解 2 則註解

myselfasunder at findmenow dot gmail dot com
14 年前
Zip 支援似乎不穩定,因為在啟用 'zlib' 和 'zip' 副檔名的情況下,僅嘗試開啟一個 Zip 檔案(由 7-Zip 建立)就會產生以下錯誤

錯誤:無法轉換 phar 封存 "C:/Development/webdir/public_html/TestPhar.zip",無法開啟項目 "TestPhar/" 的內容:phar 錯誤:基於 zip 的 phar "C:/Development/webdir/public_html/TestPhar.zip" 的內部損毀(檔案 "TestPhar/" 的本地標頭與中央目錄不符)

堅持使用 GZ 和 BZ2 格式(但如果需要,別忘了啟用 BZ2 擴充功能)。

Phar 只能開啟可執行的 Phar 檔案,而 PharData 只能開啟不可執行的 Phar 檔案。兩者都能夠在兩種格式之間互相轉換。

然而,您可以使用 Phar 資料流包裝器 (file_get_contents('phar://<Phar 檔案>/子目錄/子目錄/某個檔案.txt')) 來參考 Phar 檔案中的檔案,無論其是否可執行。

Dustin Oprea
Christian
14 年前
在安全模式 (safe_mode) 啟用時,無法建立新的壓縮檔!您只會收到「Phar 建立或開啟失敗」的錯誤訊息。
這適用於 PHP 5.3.2 中的 Phar 和 PharData。
To Top