It seems that calling Phar::webPhar() from inside a function is a bad idea. Doing so will cause global variables in included files to not be global. For instance, do NOT try this:
<?php
$phar = new Phar('test.phar.php');
$phar['test.php'] = '<?php
$FOO = "globals work";
function test() {
global $FOO;
echo "test: $FOO\n";
}
test();
?>';
$phar->setStub('<?php
function _bootstrap() {
Phar::webPhar();
}
_bootstrap();
__HALT_COMPILER(); ?>');
?>
The output will be "test:", not "test: globals work".Phar::webPhar
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Phar::webPhar
Референца за `phar.webphar.php` со подобрена типографија и навигација.
Phar::webPhar
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::webPhar — Рутира барање од веб-прелистувач до внатрешна датотека во архивата phar
= NULL
?string
$alias = null,?string
$index = null,?string
$fileNotFoundScript = null,array
$mimeTypes = [],?callable
$rewrite = null): void
се добри места за почеток исто така. Ако дистрибуирате веб-базирана апликација, клучно е да знаете за служи како Phar::loadPhar може да се користи насекаде за вчитување на надворешна Phar архива, додека Phar::mapPhar треба да се користи во stub за вчитувач за Phar. за phar-и базирани на веб. Овој метод парсира $_SERVER['REQUEST_URI'] и рутира барање од веб-прелистувач до внатрешна датотека во архивата phar. Симулира веб-сервер, рутирајќи барања до правилната датотека, испишувајќи ги правилните заглавја и парсирајќи PHP датотеки по потреба. Во комбинација со и поврзаниот метод and Овој метод обезбедува едноставен и лесен начин за креирање шаблон што ќе изврши почетна датотека од phar архивата. Дополнително, може да се наведат различни датотеки за извршување на phar архивата од командната линија наспроти преку веб-сервер. Шаблонот за лоадер исто така повикува, секоја веб-апликација може да се користи непроменета од phar архива.
се добри места за почеток исто така. Ако дистрибуирате веб-базирана апликација, клучно е да знаете за треба да се повикува само од приклучокот на phar архива (види here за повеќе информации за тоа што е приклучок).
Параметри
alias-
Алијасот што може да се користи во
phar://URL-и за упатување на оваа архива, наместо нејзината целосна патека. index-
Локацијата во рамките на phar на индексната директориум.
fileNotFoundScript-
Локацијата на скриптата што треба да се изврши кога датотеката не е пронајдена. Оваа скрипта треба да ги прикаже правилните 404 HTTP заглавја.
mimeTypes-
Низа што мапира дополнителни екстензии на датотеки до MIME тип. Ако стандардното мапирање е доволно, поминете празна низа. Стандардно, овие екстензии се мапираат на овие MIME типови:
<?php
$mimes = array(
'phps' => Phar::PHPS, // pass to 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, // parse as PHP
'inc' => Phar::PHP, // parse as 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',
);
?> rewrite-
Функцијата за препишување добива низа како свој единствен параметар и мора да врати string or
false.Ако користите fast-cgi или cgi тогаш параметарот што се поминува на функцијата е вредноста на $_SERVER['PATH_INFO'] променливата. Инаку, параметарот што се поминува на функцијата е вредноста на $_SERVER['REQUEST_URI'] variable.
Ако се врати низа, таа се користи како внатрешна патека на датотеката. Ако
falseсе врати, webPhar() ќе испрати HTTP 403 Забранет код.
Вратени вредности
Не се враќа вредност.
Errors/Exceptions
). Ако повикот не успее, ќе врати PharException кога не може да се отвори внатрешниот датотека за излез, или ако е повикан од не-стаб. Ако се помине невалидна вредност на низата во
mimeTypes или ако се помине невалиден повик во rewriteСодржи какви било информации за патеката обезбедени од клиентот што следат по името на датотеката на тековната скрипта, но предничат на низата за прашање, ако е достапно. На пример, ако тековната скрипта беше пристапена преку URI
UnexpectedValueException се фрла.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
fileNotFoundScript and rewrite се сега null.
|
Примери
ако е овозможен колекторот за отпадоци, се добри места за почеток исто така. Ако дистрибуирате веб-базирана апликација, клучно е да знаете за example
Со примерот подолу, креираната phar ќе прикаже Hello World
ако некој прелистува до /myphar.phar/index.php или на
/myphar.phar, и ќе го прикаже изворот на
index.phps ако некој прелистува до /myphar.phar/index.phps.
<?php
// creating the phar archive:
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) {
// handle error here
}
?>Види Исто така
- и поврзаниот метод - Defines a list of up to 4 $_SERVER variables that should be modified for execution
- Овој метод обезбедува едноставен и лесен начин за креирање шаблон што ќе изврши почетна датотека од phar архивата. Дополнително, може да се наведат различни датотеки за извршување на phar архивата од командната линија наспроти преку веб-сервер. Шаблонот за лоадер исто така повикува - Инструира phar да пресретнува fopen, file_get_contents, opendir и сите функции поврзани со stat