Phar::webPhar

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

Phar::webPharEncaminha uma solicitação de um navegador da web para um arquivo interno dentro do arquivo phar

Descrição

final public static Phar::webPhar(
    ?string $alias = null,
    ?string $index = null,
    ?string $fileNotFoundScript = null,
    array $mimeTypes = [],
    ?callable $rewrite = null
): void

Phar::webPhar() serve como Phar::mapPhar() para phars baseados na web. Este método analisa $_SERVER['REQUEST_URI'] e encaminha uma solicitação de um navegador web para um arquivo interno dentro do arquivo phar. Ele simula um servidor web, encaminhando solicitações para o arquivo correto, ecoando os cabeçalhos corretos e analisando arquivos PHP conforme necessário. Combinado com Phar::mungServer() e Phar::interceptFileFuncs(), qualquer aplicação web pode ser usada sem modificações a partir de um arquivo phar.

Phar::webPhar() só deve ser chamado a partir do stub de um arquivo phar (veja aqui para mais informações sobre o que é um stub).

Parâmetros

alias

O apelido que pode ser usado em URLs phar:// para se referir a este arquivo, em vez do seu caminho completo.

index

A localização dentro do phar do índice do diretório.

fileNotFoundScript

O local do script a ser executado quando um arquivo não for encontrado. Este script deve gerar os cabeçalhos HTTP 404 corretos.

mimeTypes

Um array mapeando extensões de arquivo adicionais para o tipo MIME. Se o mapeamento padrão for suficiente, passe um array vazio. Por padrão, essas extensões são mapeadas para os seguintes tipos MIME:

<?php
$mimes
= array(
'phps' => Phar::PHPS, // passado para 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, // interpretado como PHP
'inc' => Phar::PHP, // interpretado como 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

Uma função que recebe uma string como seu único parâmetro e deve retornar uma string ou false.

Se fast-cgi ou cgi estiverem sendo usados, o parâmetro passado para a função será o valor da variável $_SERVER['PATH_INFO']. Caso contrário, o parâmetro passado para a função será o valor da variável $_SERVER['REQUEST_URI'].

Se uma string for retornada, ela será usada como caminho interno do arquivo. Se false for retornado, webPhar() enviará um código HTTP 403 Forbidden (Proibido).

Valor Retornado

Nenhum valor é retornado.

Erros/Exceções

Lança PharException quando não for possível abrir o arquivo interno para saída, ou se for chamado de um arquivo não stub. Se um valor de array inválido for passado para mimeTypes ou uma função de retorno inválida for passado para rewrite, uma UnexpectedValueException será lançada.

Registro de Alterações

Versão Descrição
8.0.0 fileNotFoundScript e rewrite agora são anuláveis.

Exemplos

Exemplo #1 Um exemplo de Phar::webPhar()

Com o exemplo abaixo, o phar criado exibirá Hello World se alguém navegar para /myphar.phar/index.php ou para /myphar.phar, e exibirá a fonte de index.phps se alguém navegar para /myphar.phar/index.phps.

<?php
// criando o arquivo phar:
try {
$phar = new Phar('myphar.phar');
$phar['index.php'] = '<?php echo "Olá Mundo"; ?>';
$phar['index.phps'] = '<?php echo "Olá Mundo"; ?>';
$phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>'
);
} catch (
Exception $e) {
// lida com erros
}
?>

Veja Também

  • Phar::mungServer() - Define uma lista de até 4 variáveis ​​$_SERVER que devem ser modificadas para execução
  • Phar::interceptFileFuncs() - Instrui phar a interceptar fopen, file_get_contents, opendir e todas as funções relacionadas a stat

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
James
12 years ago
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".
To Top