segunda-feira, 9 de novembro de 2009

Várias versões de Symfony na mesma máquina (Windows)

post-chamada-4

Olá, para inaugurar as postagens vamos começar com Symfony. Todos que acompanham essa fantástica framework ja notaram a velocidade que as mudanças acontecem. O problema é que nem sempre podemos mudar nossas aplicações de versão. O compatMode ajuda a segurar as pontas, mas nada melhor do que utulizar todos os recursos da versão.

A maneira que consegui fazer isso foi instalar várias versões numa mesma máquina. Usei:

  • Windows 7 (beta);
  • PHP 5.2 (instalado em C:\PHP5);
  • Apache 2.2

Se você quer resolver esse problema no Linux, siga esse tutorial

Instalando Symfony 1.0

Seguindo o procedimento de instalação pelo PEAR pelo comando pear install

pear install symfony/symfony-1.0.21
Instalação do Symfony 1.0 - OK

Instalação do Symfony 1.0 - OK

Pronto, agora vamos renomear as pastas e redirecionar os apontamentos para receber a outra versão.

Na instalação o Symfony criou duas pastas no diretório de instalação do PHP, uma em %PHP_DIR%\data\symfony (esqueletos, forma dos módulos, etc) e %PHP_DIR%\PEAR\symfony (as classes da framework). Renomeie essas pastas de symfony para symfony10 (de symfon 1.0). Renomeie também os dois arquivos criados no diretório de instalação do PHP, symfony e symfony.bat para symfony10 e symfony10.bat.

Abra o arquivo symfony10 e altere as seguintes linhas

// PEAR
$sf_symfony_lib_dir  = 'C:\PHP5\pear/symfony';
$sf_symfony_data_dir = 'C:\PHP5\data/symfony';

para:

// PEAR
$sf_symfony_lib_dir = 'C:\PHP5\pear/symfony10';
$sf_symfony_data_dir = 'C:\PHP5\data/symfony10';

Em seguida, abra o arquivo symfony10.bat e modifique o seguinte trecho:

IF EXIST ".\symfony" (
%PHP_COMMAND% -d html_errors=off -d open_basedir= -q ".\symfony" %1 %2 %3 %4 %5 %6 %7 %8 %9
) ELSE (
%PHP_COMMAND% -d html_errors=off -d open_basedir= -q "%SCRIPT_DIR%\symfony" %1 %2 %3 %4 %5 %6 %7 %8 %9
)

para:

IF EXIST ".\symfony10" (
%PHP_COMMAND% -d html_errors=off -d open_basedir= -q ".\symfony10" %1 %2 %3 %4 %5 %6 %7 %8 %9
) ELSE (
%PHP_COMMAND% -d html_errors=off -d open_basedir= -q "%SCRIPT_DIR%\symfony10" %1 %2 %3 %4 %5 %6 %7 %8 %9
)

Obs: Se o projeto foi criado anteriormente, altere as variáveis do arquivo config.php, dentro do projeto:

$sf_symfony_lib_dir  = 'C:\PHP5\pear\symfony10';
$sf_symfony_data_dir = 'C:\PHP5\data\symfony10';

Instalando o Symfony 1.2

Agora vamos instalar a outra versão do symfony, através do pear. Escolhi a 1.2, mas poderia ser qualquer outra.

$ pear install symfony/symfony-1.2.9

Perceba que o symfony voltou a criar as mesmas pastas (symfony) nos diretórios PEAR e data no diretório do PHP, além dos arquivos symfony e symfony.bat. Vamos repetir o procedimento de renomear as pastas e os arquivos, de symfony para symfony12. Faça o mesmo procedimento dentro dos arquivos symfony e symfony.bat.

Criando as Aplicações

A partir de agora, os comandos do console são de acordo com a versão desejada. Por exemplo, para criar um projeto que antes era symfony init-project, você vai usar symfony10 init-project (para usar a versão 1.0 da framework) ou symfony12 generate:project (para versão 1.2).

criacao-app-symfony12

Como exemplo, crie um projeto para cada versão no diretório C:\Apps\PHPApps

Configurando o Host

O Symfony já está preparado, agora vamos configurar o arquivo de host e o Apache.

Abra o arquivo hosts em C:\Windows\System32\drivers\etc e adicione um hostname para cada aplicação. Ex:

127.0.0.1    app10
127.0.0.1    app12

Ambos apontando para a própria máquina.

Abra o arquivo de configuração do host do Apache. Geralmente está em C:\Arquivos de Programas\Apache Software Foundation\Apache2.2\extras\httpd-vhosts.conf. No Windows 7 o diretório padrão é Program Files (x86) e não Arquivos de Programas.

Configure os hosts, um pra cada aplicação. Ficaria assim:

NameVirtualHost *:80
# app10 - Host para aplicação symfony 1.0
<VirtualHost *:80>
  DocumentRoot "C:\Apps\PHPApps\Proj10\web"
  ServerName app10
  DirectoryIndex index.php
  Alias /sf C:\PHP5\data\symfony10\web\sf
  <Directory "C:\Apps\PHPApps\Proj10\web">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  <Directory "C:\PHP5\data\symfony10\web\sf">
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>
 
# app12 - Aplicação para Symfony 1.2
<VirtualHost *:80>
  DocumentRoot "C:\Apps\PHPApps\Proj12\web"
  ServerName app12
  DirectoryIndex index.php
  Alias /sf C:\PHP5\data\symfony12\web\sf
  <Directory "C:\Apps\PHPApps\Proj12\web">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  <Directory "C:\PHP5\data\symfony12\web\sf">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Depis de criar o projeto e a aplicação, basta acessar http://app10 ou http://app12

Tags: ,

Sobre o autor:

Thiago Bussiki
Graduado em Desenvolvimento de Sistemas, Pós-graduando em Design de Interação pelo Instituto Faber-Ludens. Programador PHP desde 2000. Desenvolve projetos em: Ruby on Rails, Flex, Wordpress, Symfony entre outros. Mais informações no LinkedIn. Siga-me no Twitter.

Deixe uma resposta