Phar::webPhar
(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) {
// обработка ошибок
}
?>
Смотрите также
- Phar::mungServer() - Определить список до четырех $_SERVER-переменных, которые должны быть изменены для запуска
- Phar::interceptFileFuncs() - Указывает phar перехватывать fopen, file_get_contents, opendir и все stat-функции