Manual do PHP
Anterior | Capítulo 6. Instalação em sistemas Windows | Próxima

# Microsoft IIS / PWS

Essa seção contêm notas e dicas específicas para o IIS (Microsoft Internet Information Server).

Atenção
Se utilizar a instalação CGI, seu servidor estará aberto a possíveis ataques. Leia nossa seção de segurança CGI para aprender em como se defender desses ataques.

## Considerações Gerais para qualquer instalação do PHP com IIS ou PWS

- Primeiro, leia as Instruções de Instalação Manual. Não pule esse passo, já que ele provê informações cruciais para instalar o PHP no Windows.

- Usuários CGI devem configurar a diretiva cgi.force_redirect para o valor `0` no arquivo `php.ini`.Leia o FAQ sobre cgi.force_redirect para obter detalhes importantes. Também é aconselhável configurar a diretiva cgi.redirect_status_env. Quando usar diretiva, assegure-se que as mesmas não estejam comentadas no arquivo `php.ini`.

- O CGI do PHP 4 tem o nome `php.exe` e o do PHP 5 `php-cgi.exe`. No PHP 5, `php.exe` é o CLI, e não o CGI.

- Modifique a variável de ambiente `PATH` do Windows para conter o diretório do PHP. Dessa maneira, os arquivos DLL, executáveis do PHP podem ficar no diretório do PHP sem ocupar ainda mais o diretório system do Windows. Para mais detalhes, veja o FAQ sobre Configurando o PATH.

- O usuáiro IIS (normalmente IUSR_MACHINENAME) precisa de permissão para ler vários diretórios e arquivos, como o `php.ini`, docroot, e o diretório temporário de sessão.

- Tenha certeza que as diretivas extension_dir e doc_root estão configuradas corretamente no arquivo `php.ini`. Essas diretivas dependem do sistema onde o PHP foi instalado. No PHP 4, extension_dir é `extensions` e no PHP 5 é `ext`. Então, um exemplo de valor extensions_dir value no PHP 5 é `"c:\php\ext"` e um exemplo de valor doc_root para o IIS é `"c:\Inetpub\wwwroot"`.

- Arquivos de DLL com extensões do PHP, tais como `php_mysql.dll` e `php_curl.dll`, são encontrados no arquivo zip do pacote do PHP (mas não no instalador do PHP). No PHP 5, muitas extensões são parte da PECL e podem ser baixadas no pacote "Coleção de módulos PECL". Arquivos como `php_zip.dll` e `php_ssh2.dll`. Baixe arquivos do PHP aqui.

- Quando definir o executável, a caixa 'check that file exists' também pode ser selecionada. Pou um pequeno custo de performance, o IIS (ou PWS) checará se o arquivo do script existe e decide a autenticação antes de inicializar o PHP. Isso significa que o servidor web retornará uma página 404 ao invés de erros de CGI reclamando que o PHP não teve saída de dados.

## Windows NT/200x/XP e IIS 4 ou superior

O PHP pode ser instalado como binário CGI, ou como módulo ISAPI. Em ambos os casos, você precisa iniciar o Microsoft Management Console (pode aparecer como 'Internet Services Manager', ou no seu Windows NT 4.0 Option Pack ou no Control Panel=>Administrative Tools no Windows 2000/XP). Então clique no botão direito no seu ícone Web server (Provavelmente aparecerá como 'Default Web Server'), e selecione 'Properties'.

Se você quiser usar o binário CGI, faça o seguinte:

- Em 'Home Directory', 'Virtual Directory', ou 'Directory', faça o seguinte:

- Mude as Permissões de Execução para 'Scripts only'

- Clique no botão 'Configuration', e escolha a aba Application Mappings. Clique em Add e configure o caminho de execução do arquivo CGI apropriado. Um valor exemplo no PHP 5: `C:\php\php-cgi.exe` Marque `.php` como a extensão. Deixe 'Method exclusions' em branco, e marque a opção 'Script engine'. Agora clique OK algumas vezes.

- Configure a segurança apropriada. (Isso é feito no Internet Service Manager), e se seu Servidor NT usa o sistema de arquivos NTFS, adicione direito de execução para I_USR_ no diretório que contem `php.exe` / `php-cgi.exe`.

Para usuar o módulo ISAPI, faça o seguinte:

- Se você não quiser fazer Autenticação HTTP usando o PHP, você pode (e deve) pular esse passo. Em ISAPI Filters, adicione um novo filtro ISAPI. Use PHP como nome do filtro e dê o caminho para `php4isapi.dll` / `php5isapi.dll`.

- Em 'Home Directory', 'Virtual Directory', ou 'Directory', faça o seguinte:

- Mude as Permissões de Execução para 'Scripts only'

- Clique no botão 'Configuration', e escolha a aba Application Mappings. Clique em Add e configure o caminho de execução da DLL ISAPI apropriada. Um valor exemplo no PHP 5: `C:\php\php5isapi.dll` Marque `.php` como a extensão. Deixe 'Method exclusions' em branco, e marque a opção 'Script engine'. Agora clique OK algumas vezes.

- Pare o IIS completamente (NET STOP iisadmin)

- Inicialize o IIS novamente (NET START w3svc)

Com o IIS 6 (2003 Server), abra o IIS Manager, vá até Web Service Extensions, selecione "Add a new Web service extension", digite um nome como PHP, clique no botão Add e coloque no campo valor coloque ou o arquivo ISAPI (`php4isapi.dll` ou `php5isapi.dll`) ou do CGI (`php.exe` ou `php-cgi.exe`) e selecione a opção "Set extension status to Allowed" e clique OK.

Para usar `index.php` como página padrão de conteúdo, faça o seguinte: Na aba Documents, escolha Add. Digite `index.php` e clique OK. Ajuste a ordem clicando em Move Up ou Move Down. Isso é similar a configurar DirectoryIndex no Apache.

Os passos acima devem ser repetidos para cada extensão que será associada com scripts PHP. `.php` é a mais comum embora `.php3` pode ser necessária para código legado.

Se ocorrer 100% de uso de CPU depois de um tempo, desligue a configuração do IIS `Cache ISAPI Application`.

## Windows e PWS 4

PWS 4 não tem suporte a ISAPI, somente o CGI deve ser usado.

- Edite o arquivo `pws-php4cgi.reg` / `pws-php5cgi.reg` (procure no diretório SAPI no PHP 4, ou no diretório principal do PHP 5) para refletir a localização do seu `php.exe` / `php-cgi.exe`. Barras-invertidas devem ser escapadas, por exemplo: `[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\php\\php.exe"` (mude para `C:\\php\\php-cgi.exe` se você estiver usando PHP 5) Agora adicione o arquivo ao registro do seu sistema; você pode fazer isso clicando duas vezes nele.

- No PWS Manager, clique com o botão direito em um diretório que você queira adicionar suporte ao PHP, e selecione Properties. Marque a opção 'Execute' e confirme.

## Windows e PWS/IIS 3

O método recomendado para configurar o PHP nesses servidores é usar o arquivo REG incluso na distribuição (`pws-php4cgi.reg` na pasta SAPI para o PHP 4, ou `pws-php5cgi.reg` na pasta principal para o PHP 5). Você pode querer editar o arquivo e assegurar-se que o diretório das extensões e do PHP estão corretos. Ou você pode seguir os passos abaixo para fazer manualmente.

Atenção
Esses passos involvem trabalhar diretamente com o registro do Windows. Um erro aqui pode deixar seu sistema em um estado instável. Nós recomendamos que você faça um backup do seu registro primeiro. O time de desenvolvimento do PHP não será responsável se você danificar seu registro.

- Execute Regedit.

- Vá até: `HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap`.

- No menu editar (edit) selecione: `New->String Value`.

- Digite a extensão que você quer para seus scripts PHP. Por exemplo `.php`

- Clique duas vezes no novo valor string e entre o caminho para `php.exe` no campo de valor. ex: `C:\php\php.exe` para o PHP 4, ou `C:\php\php-cgi.exe` para o PHP 5.

- Repita esses passos para cada extensão que você quiser associar com scripts PHP.

Os passos a seguir não afetam a instalação do servidor web e só se aplicam se você quiser que seus scripts sejam executados quando eles forem chamados da linha de comando (ex. run `C:\myscripts\test.php`) ou clicando duas vezes neles na janela de visualização de diretório. Você pode pular esses passos já que você pode preferir que os arquivos PHP sejam carregados em um editor de texto quando você clicar duas vezes neles.

- Vá até: `HKEY_CLASSES_ROOT`

- No menu de editar (edit) selecione: `New->Key`.

- Nomeie a chave com a extensão que você configurou na seção anterior. ex: `.php`

- Selecione a chave nova e no painel do lado direto, clique duas vezes no "default value" e digite `phpfile`.

- Repita o passo anterior para cada extensão que você configurou na seção anterior.

- Agora crie um outra chave (`New->Key`) em `HKEY_CLASSES_ROOT` e chame ela de `phpfile`.

- Selecione a chave nova `phpfile` e no painel do lado direito, clique duas vezes em "default value" e digite `PHP Script`.

- Clique com o botão direito na chave `phpfile` e selecione `New->Key`, e a chame de `Shell`.

- Clique com o botão direito na chave `Shell` e selecione `New->Key`, e a chame de `open`.

- Clique com o botão direito na chave `open` e selecione `New->Key`, e a chame de `command`.

- Selecione a chave nova `command` e no painel do lado direito, clique duas vezes em "default value" e entre o caminho para `php.exe`. ex: `c:\php\php.exe -q %1`. (não esqueça o `%1`).

- Saia do Regedit.

- Se estiver usando PWS no Windows, reinicie para recarrega o registro.

Usuários do PWS e do IIS 3 agora tem um sistema totalmente operacional. Usuários do IIS 3 pode usar uma ferramenta legal de Steven Genusa para configurar os mapas dos seus scripts.

Anterior | Principal | Próxima
ActiveScript | Acima | Apache 1.3.x no Microsoft Windows