The symfony Cookbook

Instalando o symfony no IIS

About

You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.

Symfony Live 2010 Paris Conference

Chapter Content

De que precisamos?

Instalar o symfony

Iniciando um projeto

Configurando o IIS

Configurando URL rewriting

Configurando o symfony

Configurando uma aplicação symfony com diretório específico

symfony training
Be trained by symfony experts
Jul 22: Paris (1.2 + Doctrine - Français)
Aug 19: San Francisco (1.2 + Doctrine - English)
Sep 23: Paris (1.2 + Doctrine - Français)
Oct 21: Nantes (1.2 + Doctrine - Français)
Nov 18: Paris (1.2 + Doctrine - Français)
and more...

Search


powered by google
You are currently browsing "The symfony Cookbook" in for the 1.1 version - Switch to version: - Switch to language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed.

Sim, existe algo mais que o Apache para servidores web. É por isso que nós vamos ver esse tutorial sobre como instalar o symfony no IIS.

De que precisamos?

Instalar o symfony

Primeiramente, atualize o pacote do pear, porque você precisa de pelo menos da versão 1.4.0 para utilizar o canais:

$ pear upgrade PEAR

Então, adicione o canal do symfony:

$ pear channel-discover pear.symfony-project.com

Instale a versão do symfony >= 0.5.73:

$ pear install symfony/symfony-beta

Nota: se você não possui o pacote phing, você precisa instalar:

$ pear install http://phing.info/pear/phing-current.tgz

Saiba mais sobre a instalação do symfony

Iniciando um projeto

Para criar o diretório do seu projeto (vamos usar c:\myproject) e a estrutura básica para uma aplicação chamada myapp, abra o console (command) e digite:

$ cd c:\myproject
$ symfony init-project myproject
$ symfony init-app myapp

Configurando o IIS

Vamos considerar dois tipo de configuração por agora:

Adicionaremos um diretório virtual no diretório principal do servidor. Vamos nomeá-lo de sf e configurar ele para o caminho data\symfony\web\sf dentro do diretório do pear. Se você tem o PHP5 instalado na pasta c:\php5, o caminho será C:\php5\PEAR\pear\data\symfony\web\sf.

Configurando URL rewriting

Vamos assumir que o módulo isapi/rewrite está instalado e funcionando no nosso servidor. Nós precisamos configurar apenas nosso httpd.ini. Essa configuração vai depender da opção escolhida anteriormente:

Reinicie o IIS.

Configurando o symfony

O último passo é editar o arquivo settings.yml que fica no diretório config do projeto symfony (c:\myproject\apps\myapp\config\). Você não vai se surpreender se encontrar uma pequena diferença nos dois casos:

Dica importante: se você não está usando o módulo isapi/rewrite/, o HTTP_X_REWRITE_URL pode estar errado. Você vai precisar fazer um teste específico para configurar o symfony. Abra o arquivo myapp_dev.php (ou qualquer outro nome application_dev.php) no diretório web do seu projeto e adicione as 2 linhas seguintes:

print phpinfo();
die();

Agora abra a URL: http://myproject/myapp_dev.php/test/rewrite (ou http://myserver/myproject/myapp_dev.php/test/rewrite dependendo da sua configuração), e veja as variáveis do PHP. Se _SERVER["PATH_INFO"] for igual a /test/rewrite, remova a linha que contém o path_info_key do settings.yml, senão você vai ter que achar o nome da variável que contém o valor (HTTP_X_REWRITE_URL para isapi/rewrite/). Depois que achar, remova as 2 linhas acima e pronto.

Configurando uma aplicação symfony com diretório específico

Um projeto symfony pode conter diversas aplicações. Por padrão, todas as aplicações podem compartilhar o mesmo diretório de css e uploads. Vamos trocar isso e criar um diretório específico para nossa aplicação myapp. Considerando as opções anteriores, vamos interpretar as seguintes URLs: http://myproject/myapp e http://myserver/myapp. Agora não temos mais diferença na configuração das próximas opções.

Vamos criar um subdiretório myapp dentro do diretório web do nosso projeto (no nosso caso c:\myproject\web\myapp).

Vamos copiar os arquivos index.php e myapp_dev.php para esse diretório e criar mais dois diretórios lá dentro, css e uploads.

Na tela de administração do IIS, vamos criar um novo diretório virtual chamado myapp. Configure esse diretório apontando para c:\myproject\web\myapp.

Adicione as linhas abaixo no final do httpd.ini:

  #[Configuration for direct myapp access]
  # we skip all files with .something except .html
  RewriteCond URL /myapp/.*\..+$
  RewriteCond URL (?!/myapp/.*\.html$).*
  RewriteRule /myapp/(.*) /myapp/$1 [L]

  # we keep the .php files unchanged
  RewriteRule /myapp/(.*\.php)(.*) /myapp/$1$2 [L]

  # finally we redirect to our front web controller
  RewriteRule /myapp/(.*) /myapp/index.php [L]

Edite o settings.yml da aplicação myapp (c:\myproject\apps\myapp\config\settings.yml) e tenha certeza das seguintes linhas:

  all:
   .settings:
     path_info_key:          HTTP_X_REWRITE_URL

(veja as considerações anteriores para HTTP_X_REWRITE_URL)

Finalmente, vamos editar nossos front controllers (index.php e myapp_dev.php em c:\myproject\web\myapp) e trocar:

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));

para:

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/../..'));

É isso ai. Terminamos.

Questions & Feedback

If you find a typo or an error, please register and open a ticket.

If you need support or have a technical question, please post to the official user mailing-list.

The Sensio Labs Network

Since 1998, Sensio Labs has been promoting the Open-Source software movement by providing quality web application development, training, consulting, and supporting several large Open-Source projects.