Forum und email

Microsoft IIS / PWS

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

Aviso

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.

Aviso

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.