Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Publicando aplicações PHP no IIS 8

Veremos neste artigo como publicar uma aplicação web desenvolvida em PHP em um ambiente Windows no IIS8, dispensando a necessidade comum de usar o Apache.

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (0)

Motivação

Normalmente, quando se precisa publicar/hospedar uma aplicação PHP, recorre-se à instalação do Apache no servidor, mesmo que esse já possua outros projetos em execução no Internet Information Services (IIS). No entanto, apesar de nem todos os desenvolvedores PHP saberem, principalmente aqueles que estão iniciando com a tecnologia, também é possível publicar essas aplicações no IIS (versão 8, neste caso). Para isso, basta configurar o ambiente adequadamente, como veremos a seguir.

Passo 1: Baixar a última versão do PHP

Para que as aplicações sejam executadas, é preciso instalar o PHP no servidor, o que pode ser feito a partir do site oficial, baixando o pacote compactado para Windows. Logo após, basta descompactar o conteúdo do arquivo no diretório C:\PHP.

Para verificar se tudo correu bem até aqui, abra o prompt de comandos, navegue até o diretório criado e digite o seguinte comando, que deve retornar a versão do PHP, como ilustra a Figura 1:

    php --version
    


Figura 1. Verificando a versão do PHP

Passo 2: Referenciar o PHP no Path do Windows

O próximo passo é adicionar ao PATH do Windows o caminho onde está instalado o PHP, para que ele possa ser executado de qualquer ponto do sistema operacional, não apenas do próprio diretório, como fizemos acima. Para isso, clique com o botão direito do mouse em Meu Computador e vá em Configurações Avançadas do Sistema. Na janela que será aberta, acesse as Variáveis de Ambiente e edite a variável Path, que fica localizada dentro de Variáveis do Sistema. Essa variável já deverá conter uma série de diretórios de outras ferramentas instaladas no sistema. Adicione ao final delas o caminho “;c:\PHP” (sem aspas, porém com o ponto e vírgula). No Windows 10, ao invés de adicionar o caminho separado por ponto e vírgula, basta clicar em Novo, na tela de edição da variável, e incluir o diretório C:\PHP no final da lista.

Feito isso, abra o prompt de comandos novamente e execute o mesmo comando para verificar a versão do PHP, sem navegar para a pasta que criamos anteriormente. Caso o resultado seja o mesmo que o anterior, o PHP foi referenciado corretamente e agora está no Path do Windows.

Passo 3: Adicionar um manipulador para o PHP

Com o PHP instalado, precisamos criar um manipulador para esse tipo de aplicação no Internet Information Services. Sendo assim, abra o IIS, selecione o seu Host e dê dois cliques em Handler Mappings. Na lateral direita, em Actions, dê dois cliques em Add Module Mappings. Será aberta uma tela cujos campos você deve preencher com os seguintes valores, e como ilustra a Figura 2:

  • Request path: preencha com a extensão dos arquivos que deseja tratar. Neste caso, devemo usar *.php para mapear tudo que termine com .php;
  • Module: para que o PHP possa ser executado em um ou mais processos no pool, adicione aqui o módulo FastCgiModule, capaz de fazer a interface entre o servidor e a aplicação PHP;
  • Executable (optional): informe o caminho do executável php-cgi.exe, que se encontra na pasta do PHP baixada anteriormente;
  • Name: informe um nome para o mapeamento (nesse exemplo, FastCgi).


Figura 2. Adicionando um manipulador para o PHP

Ao clicar em OK, deverá aparecer uma mensagem de confirmação como a que vemos na Figura 3. Clique em Sim para prosseguir.


Figura 3. Modal para confirmar o Mapeamento de Módulo

Passo 4: Testar o PHP

Caso tudo tenha sido configurado sem problemas até aqui, você já pode criar um novo projeto no IIS e, dentro dele, adicionar um novo arquivo chamado phpInfo.php. Nesse arquivo, adicione o código abaixo, que deverá mostrar as informações do ambiente PHP instalado:

    <?php phpinfo(); ?>
    

Em seguida, selecione novamente o seu projeto no IIS, vá em Default Document e depois em Adicionar, na lateral direita. Neste momento, inclua o seu arquivo PHP padrão (geralmente index.php) e deixe ele em primeiro na lista, como mostra a Figura 4.


Figura 4. Adicionar arquivo PHP padrão na lista de documentos

Agora, reinicie o projeto, clique em Procurar site para abri-lo no browser e depois digite phpInfo.php no final da URL. O resultado deve ser igual ao da Figura 5, indicando que a aplicação já está sendo executada no IIS.


Figura 5. Resultado do arquivo phpInfo.php

Passo 5: Corrigir o erro de permissão no IIS

O Windows Server 2008 Service Pack 2 (SP2) veio com uma atualização de segurança chamada Pool Identify. Esse mecanismo habilita a sua aplicação a rodar dentro de uma única conta do sistema, que por padrão vem configurada como ApplicationPoolIdentity. Essa conta é criada com a instalação do IIS, e vem inicialmente sem permissões, impedindo o site de ser executado.

Para que a aplicação possa ser executada sem restrições, existem duas opções:

  1. Criar um usuário e definir suas permissões em todos os arquivos e sites, procedimento que pode demandar algum tempo;
  2. Utilizar o usuário que vem com a instalação do IIS, o LocalSytem, que tem as permissões mínimas para que o site rode corretamente.

Caso você execute um site recém-publicado no IIS e ele retorne o erro ilustrado na Figura 6, esse erro ocorreu por causa da permissão do usuário no pool em que o seu site foi publicado.


Figura 6. Erro de permissão de pool

Para resolver esse problema, basta acessar as configurações avançadas do seu pool, no gerenciador do IIS, e alterar a Identidade, que estará com o valor ApplicationPoolIdentity, para LocalSytem (veja a Figura 7).


Figura 7. Alterando a Identidade Default para LocalSystem

Carregando
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Ajude-nos a evoluir: você gostou do post?  (5)  (0)
Confirmar voto
Compartilhe:
Ficou com alguma dúvida?