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

# Phar::webPhar

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

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

### Descrição

final public static function 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open