O que é o formato de ficheiro PHAR?
Arquivos .phar estão associados ao ambiente de desenvolvimento PHP. Um arquivo .phar é o equivalente em PHP de um arquivo JAR - ele empacota uma aplicação ou biblioteca PHP inteira em um único pacote auto-contido e executável que pode ser distribuído como um único arquivo.
Que tipo de dados os arquivos PHAR podem conter?
Arquivos .phar armazenam scripts PHP e quaisquer ativos de suporte (templates, configurações, recursos), opcionalmente compactados com gzip ou bzip2 por arquivo ou para todo o arquivo. Todo arquivo .phar contém um stub PHP executável, um manifesto binário listando os arquivos empacotados com metadados e uma assinatura criptográfica opcional (MD5, SHA-1, SHA-256, SHA-512 ou OpenSSL) verificada via phar.require_hash.
Como posso executar arquivos PHAR?
Arquivos .phar podem ser executados diretamente com o interpretador de linha de comando do PHP: php app.phar. Exemplos conhecidos incluem o composer.phar e o phpunit.phar. Criar ou modificar um Phar programaticamente requer phar.readonly=0 no php.ini, que é definido como 1 (somente leitura) por padrão.
Preocupações de segurança em relação aos arquivos PHAR
Desde o PHP 5.3.0, o suporte ao Phar é habilitado por padrão. A execução automática de código PHAR em um ambiente PHP apresenta riscos sérios à segurança do sistema. Existem casos conhecidos onde código PHP malicioso foi distribuído em arquivos PHAR mascarados como arquivos JPEG ou .txt usando uma simples substituição de extensão. Abrir tal arquivo pode fazer com que o sistema seja infectado por software malicioso. Além disso, acionar wrappers de fluxo Phar (phar://) em caminhos de arquivo controlados por invasores pode desserializar metadados incorporados e levar à execução remota de código por injeção de objetos.
Segurança e proteção
RISCO: HIGHUm PHAR é código PHP executável, portanto, trate-o como qualquer programa: execute apenas Phars de fontes oficiais e confiáveis (composer.phar de getcomposer.org, phpunit.phar de phpunit.de) e verifique o checksum/assinatura publicado quando fornecido. Além da execução, os Phars são um vetor de ataque notório no lado do servidor: o wrapper de fluxo phar:// pode desserializar metadados incorporados, permitindo injeção de objetos PHP / execução remota de código se uma aplicação passar caminhos controlados por invasores para funções de arquivo. Nunca execute um .phar não solicitado e, em servidores, evite fornecer entrada de usuário para funções que possam resolver caminhos phar://.
Detalhes do formato
em resumoProgramas que abrem arquivos PHAR
php tool.phar (ou php tool.phar --help) para executá-lo. php tool.phar (ou php tool.phar --help) para executá-lo. php tool.phar (ou php tool.phar --help) para executá-lo. Detalhes técnicos
especificação profunda| Ponto de entrada (stub) | Stub PHP executável terminando com o token `__HALT_COMPILER();`, que marca o início do manifesto binário |
| Magic de assinatura final | Magic de 4 bytes GBMB no bloco de assinatura final (presente apenas em Phars assinados) |
| Compactação | Nenhuma, Zlib (gzip) ou Bzip2 - configurável por arquivo ou para todo o arquivo |
| Algoritmos de assinatura | MD5, SHA-1, SHA-256, SHA-512 ou OpenSSL X.509 (controlado por phar.require_hash no php.ini) |
| Método de execução | Executado diretamente com `php app.phar`; nenhuma extração é necessária |
| Requisito de criação | `phar.readonly=0` deve estar definido no php.ini para criar ou modificar arquivos Phar em tempo de execução |
| Layout interno | Stub PHP + manifesto binário (lista de arquivos, versão da API, flags) + dados do arquivo + bloco de assinatura opcional |
| Ordem dos bytes | Little-endian |
| Tamanho típico | Dezenas de KB a dezenas de MB (ex: composer.phar ~2 MB, phpunit.phar ~3 MB) |
| Suporte de versão PHP | Incluído por padrão desde o PHP 5.3 (2009); mantido até o PHP 8.x |
| Risco de segurança | A desserialização Phar via wrapper de fluxo `phar://` em caminhos controlados por invasores pode desencadear RCE por injeção de objeto |
| Layouts de carga suportados | Phar plano, Phar baseado em tar ou Phar baseado em zip (o PHP seleciona o formato a partir do manifesto) |
| Lançado | 2008 (Phar extension bundled in PHP 5.3) |
| Versão mais recente | Maintained as a core PHP extension (current through PHP 8.x) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | www.php.net |
Conversões de PHAR
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos PHAR.
Perguntas frequentes
Como eu executo um arquivo PHAR?
php tool.phar. No Linux/macOS você também pode usar chmod +x tool.phar && ./tool.phar se ele tiver um shebang. Clicar duas vezes geralmente não funcionará.O que é um arquivo PHAR?
Como eu abro um PHAR para ver o que tem dentro?
É seguro executar um arquivo PHAR?
Por que meu PHAR não executa - erro 'phar.readonly'?
Posso transformar um PHAR em um EXE?
php tool.phar, ou empacote o PHP com o Phar usando um empacotador dedicado se você realmente precisar de um .exe independente.