(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)
Phar::webPhar — mapPhar для phar-архивов на базе веб. Контроллер фронтенда для веб-приложений
$alias
[, string $index
= "index.php"
[, string $f404
[, array $mimetypes
[, callable $rewrites
]]]]] ) : voidPhar::mapPhar() для phar-архивов на базе веб. Этот метод разбиарет $_SERVER['REQUEST_URI'] и маршрутизирует запросы веб-браузера к конкретному файлу в phar-архиве. Фактически это симуляция веб-сервера, перенаправляющего запросы к корректным файлам, возвращающим правильные заголовки и разбирающий PHP-файлы, если необходимо. Этот мощный метод является частью того, что упрощает преобразование существующего PHP-приложения в phar-архив. Совместно с Phar::mungServer() и Phar::interceptFileFuncs() он помогает запускать любое веб-приложение из phar-архива, никак его не меняя.
Phar::webPhar() должен вызываться только из заглушки (stub) phar-архива (о том, что такое заглушка и как с ним работать, читайте тут).
alias
Псевдоним для использования в обертках phar://.
index
Местоположение в phar-архиве индексного файла.
f404
Местоположение скрипта, отвечающего за обработку ошибки HTTP 404. Скрипт должен возвращать корректные заголовки для этой ошибки.
mimetypes
Массив сопоставления расширений файлов типам MIME. Если достаточно сопоставления по умолчанию, то передайте сюда пустой массив. По умолчанию используются такие сопоставления:
<?php
$mimes = array(
'phps' => Phar::PHPS, // передается в highlight_file()
'c' => 'text/plain',
'cc' => 'text/plain',
'cpp' => 'text/plain',
'c++' => 'text/plain',
'dtd' => 'text/plain',
'h' => 'text/plain',
'log' => 'text/plain',
'rng' => 'text/plain',
'txt' => 'text/plain',
'xsd' => 'text/plain',
'php' => Phar::PHP, // разбирается как PHP
'inc' => Phar::PHP, // разбирается как PHP
'avi' => 'video/avi',
'bmp' => 'image/bmp',
'css' => 'text/css',
'gif' => 'image/gif',
'htm' => 'text/html',
'html' => 'text/html',
'htmls' => 'text/html',
'ico' => 'image/x-ico',
'jpe' => 'image/jpeg',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'js' => 'application/x-javascript',
'midi' => 'audio/midi',
'mid' => 'audio/midi',
'mod' => 'audio/mod',
'mov' => 'movie/quicktime',
'mp3' => 'audio/mp3',
'mpg' => 'video/mpeg',
'mpeg' => 'video/mpeg',
'pdf' => 'application/pdf',
'png' => 'image/png',
'swf' => 'application/shockwave-flash',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'wav' => 'audio/wav',
'xbm' => 'image/xbm',
'xml' => 'text/xml',
);
?>
rewrites
Функция перезаписи, которой передается единственный строковый параметр и
которая должна также вернуть строку, либо FALSE
.
Если вы используете fast-cgi или cgi, то параметром, передаваемым в эту функцию будет значение переменной $_SERVER['PATH_INFO']. В ином случае передаваться будет значение переменной $_SERVER['REQUEST_URI'].
Если будет возвращена строка, то она будет использована как путь
к файлу внутри архива. Если вернется FALSE
, то webPhar() пошлет
код ошибки HTTP 403.
Эта функция не возвращает значения после выполнения.
Выбросит исключение PharException, если будет невозможно
открыть какой-либо файл, либо если вызывать ее не из заглушки.
Если в параметре mimetypes
указать некорректный MIME-тип,
или в rewrites
будет передана некорректная функция
обратного вызова, то будет выброшено исключение
UnexpectedValueException.
Пример #1 Пример использования Phar::webPhar()
В примере ниже, созданный phar отобразит Hello World при обращении из браузеа к /myphar.phar/index.php или к /myphar.phar, и отобразит исходный код index.phps при обращении к /myphar.phar/index.phps.
<?php
// создаем архив:
try {
$phar = new Phar('myphar.phar');
$phar['index.php'] = '<?php echo "Hello World"; ?>';
$phar['index.phps'] = '<?php echo "Hello World"; ?>';
$phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>');
} catch (Exception $e) {
// обработка ошибок
}
?>