Posts Tagged ‘phar’
PHAR – O JAR do PHP
Friday, July 30th, 2010
O que é o Phar^
Análago ao .jar do Java, o Phar é utilizado para encapsular arquivos .php e outros em um único arquivo .phar. Uma aplicação inteira pode ser distribuida e executada em um único arquivo, junto com seus arquivos de auxiliares como imagens, css, etc. Não existe ferramenta para gerar .phar, estes são gerados pela classe Phar.
Exemplos de uso^
- Publicar sua aplicação inteira com somente um arquivo;
- Usar como um padrão para distribuição de plugins/drivers/etc. para uma aplicação;
- Gerar arquivos de instalação “auto-instaláveis”.
Instalação^
O Phar já vem junto com o PHP desde a versão 5.3.0. Porém, nas versões anteriores é possível instala-lo através de uma extensão, como visto no seguinte link: http://pecl.php.net/package/phar.
Tutorial^
Neste tutorial será mostrado passo-a-passo como gerar um arquivo .phar a partir de arquivos .php e como executa-lo pelo navegador.
Habilite a escrita no php.ini^
Por razões de segurança, a geração de arquivos .phar é desabilitada por padrão no php.ini. Para habilitar a geração, mude a configuração phar.readonly para Off. Em um servidor de produção não é necessário deixar essa configuração inativa.
Crie a aplicação de teste^
index.php
-
<?php
-
include(‘include.php’);
-
funcao();
-
?>
include.php
-
<?php
-
function funcao() {
-
echo ‘Sim, funciona!’;
-
}
-
?>
Gere o .php que irá criar o .phar^
gera_phar.php
-
<?php
-
// Cria o arquivo e define o tipo dele como phar não comprimido
-
$phar = new Phar(‘testephar.phar’, 0, ‘testephar.phar’);
-
$phar = $phar->convertToExecutable(Phar::PHAR);
-
-
// Adiciona os arquivos index.php e include.php no testephar.phar
-
$phar->addFile(‘index.php’);
-
$phar->addFile(‘include.php’);
-
-
// Define o index.php como arquivo padrão ao executar
-
$phar->setMetaData(array(‘bootstrap’ => ‘index.php’));
-
?>
Execute o gera_phar.php, na linha de comando ou pelo navegador:
-
$ php gera_phar.php
Teste o arquivo criado, por linha de comando^
Agora nosso arquivo já pode ser executado por linha de comando:
-
$ php testephar.phar
Deve retornar:
-
Sim, funciona!
Configure o Apache para executar arquivos .phar^
Se você acessar pelo navegador o arquivo .phar agora, ele irá baixar o arquivo ao invés de interpreta-lo, portanto precisamos configurar ou Apache (ou outro Servidor Web).
Adicione a seguinte linha ao arquivo httpd.conf:
-
AddType application/x-httpd-php .phar
Após reiniciar o Apache, o .phar já pode ser executado pelo navegador, como mostrado abaixo:
Executando .phar pelo navegador sem usar o Apache.^
É possível executar arquivos .phar pelo navegador sem alterar as configurações do Apache, basta renomear o arquivo testephar.phar para testephar.phar.php, facilitando a distribuição de aplicações.
Outras Funções^
Além do que foi visto neste artigo, o pacote .phar tem várias funções, veja algumas delas:
- Incluir arquivos de diretórios recursivamente;
- Diversos tipos de compactação, como: zip, tar, gzip, bz2;
- Adicionar e excluir arquivos on-the-fly;
- “Incluir” arquivos de dentro do .phar a partir de um .php que esteja fora;
- Utilizar funções de tratamento de arquivos (como fopen, etc.) dentro do .phar;
- Converter arquivos .tar.gz (ou outros) em .phar prontos para execução.
Referências^