Instalação no Windows
PHP Manual

Installation on old Windows systems

This section applies to Windows 98/Me and Windows NT/2000/XP/2003. PHP will not work on 16 bit platforms such as Windows 3.1 and sometimes we refer to the supported Windows platforms as Win32.

Nota:

Windows XP/2003 are no longer supported as of PHP 5.5.0.

Nota:

Windows 98/Me/NT4/2000 are no longer supported as of PHP 5.3.0.

Nota:

Windows 95 is no longer supported as of PHP 4.3.0.

If you have a development environment such as Microsoft Visual Studio, you can also PHP from the original source code.

Once you have PHP installed on your Windows system, you may also want to load various extensions for added functionality.

Passos para Instalação Manual

Esse guia de instalação ajudará você a instalar manualmente e configurar o PHP em um servidor web no Microsoft Windows.

Selecionando e baixando o pacote de distribuição do PHP

Baixe o binário do PHP em ZIP do link » PHP para Windows: Binários e fontes. Existem várias versões diferentes do pacote zip - escolha a versão que se encaixa seguindo o guia detalhado na » página de download.

Estrutura e conteúdo do pacote PHP

Descompacte o conteúdo do arquivo zip em um diretório de sua escolha, por exemplo C:\PHP\. A estrutura de arquivos e diretórios extraídos serão conforme mostrado abaixo:

Exemplo #1 Estrutura do pacote PHP 5


c:\php
   |
   +--dev
   |  |
   |  |-php5ts.lib                 -- php5.lib em versão non thread safe
   |
   +--ext                          -- DLLS de extensões para o PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-...
   |
   +--extras                       -- vazio
   |
   +--pear                         -- cópia inicial do PEAR
   |
   |
   |-go-pear.bat                   -- script de setup do PEAR
   |
   |-...
   |
   |-php-cgi.exe                   -- executável CGI
   |
   |-php-win.exe                   -- executa scripts sem um prompt de comando aberto
   |
   |-php.exe                       -- executável PHP de Linha de Comando (CLI)
   |
   |-...
   |
   |-php.ini-development           -- configurações php.ini padrão
   |
   |-php.ini-production            -- configurações php.ini recomendadas
   |
   |-php5apache2_2.dll             -- não existe na versão non thread safe
   |
   |-php5apache2_2_filter.dll      -- não existe na versão non thread safe
   |
   |-...
   |
   |-php5ts.dll                    -- principal DLL do PHP ( php5.dll em versão non thread safe)
   |
   |-...

Abaixo está a lista de módulos e executáveis incluídos na distrubuição zip:

  • go-pear.bat - o script de setup do PEAR. Veja a » Instalação (PEAR) para mais detalhes.

  • php-cgi.exe - executável CGI que pode ser usado quando rodar o PHP no IIS via CGI ou FastCGI.

  • php-win.exe - executável do PHP para executar scripts PHP sem usar uma janela de linha de comando (por exemplo aplicativos PHP que usam a interface (GUI) do Windows).

  • php.exe - executável do PHP para executar scripts PHP dentro de uma interface de linha de comando (CLI).

  • php5apache2_2.dll - módulo para o Apache 2.2.X.

  • php5apache2_2_filter.dll - filtro para o Apache 2.2.X.

Alterando o arquivo php.ini

Depois que o conteúdo do pacote php foi extraído, copie o php.ini-production para php.ini dentro da mesma pasta. Se necessário, também é possível colocar o php.ini em qualquer outra localização de sua escolha, mas isso requer configurações adicionais conforme descrito em Configuração do PHP.

O arquivo php.ini diz para o PHP como se configurar, e como trabalhar com o ambiente em que ele está rodando. Aqui estão algumas configurações do arquivo php.ini que ajudarão o PHP a funcionar melhor com o Windows. Algumas delas são opcionais. Existem muitas outras diretivas que podem ser relevantes para o seu ambiente - veja a lista de diretivas do php.ini para mais informações.

Diretivas requeridas:

  • extension_dir = <caminho para o diretório de extesões> - A extension_dir precisa apontar para o diretório onde as extensões do PHP estão guardadas. O caminho pode ser absoluto (ex: "C:\PHP\ext") ou relativo (ex: ".\ext"). Extensões que estão listadas mais abaixo no arquivo php.ini precisam estar localizadas em extension_dir.

  • extension = xxxxx.dll - Para cada extensão que você deseja ativar, você precisa de uma diretiva "extension=" correspondente que diga o PHP que extensão no extension_dir para carregar durante a inicialização.

  • log_errors = On - O PHP tem um dispositivo de log de erros que pode ser usado para enviar erros para um arquivo, ou um serviço (ex: syslog) e funciona em conjunto com a diretiva abaixo error_log. Quando rodando sob o IIS, a log_errors pode ser ativada, com um error_log válido.

  • error_log = <caminho para o arquivo de log de erro> - A error_log deve especificar o caminho absoluto, ou relativo para o arquivo onde os erros do PHP devem ser logados. O servidor web precisa ter permissão de escrita para esse arquivo. Os caminhos mais comuns para esse arquivo são em diretórios TEMP, por exemplo "C:\inetpub\temp\php-errors.log".

  • cgi.force_redirect = 0 - Essa diretiva é requerida para rodar sob o IIS. É uma diretiva de segurança requerida por muitos outros servidores web. Entretanto, ativá-la sob o IIS fará com que o motor do PHP falhe no Windows.

  • cgi.fix_pathinfo = 1 - Isso permite que o PHP acesse a informação de caminho real dentro das especificações CGI. A implementação de IIS e FastCGI precisa que isso seja configurado.

  • fastcgi.impersonate = 1 - O FastCGI sob IIS tem a habilidade de imitar tokens de segurança do cliente que está chamando. Isso permite que o IIS defina o contexto de segurança da chamada.

  • fastcgi.logging = 0 - O log de FastCGI deve ser desativado no IIS. Se for deixado ativo, qualquer mensagem de qualquer classe é tratada pelo FastCGI como condições de erro que farão o IIS gerar uma excessão HTTP 500.

Diretivas opcionais

  • max_execution_time = ## - Essa diretiva diz ao PHP qual o máximo de tempo que ele pode gastar executando um determinado script. O padrão é 30 segundos. Aumente o valor dessa diretiva se as aplicações demoram muito tempo para executar.

  • memory_limit = ###M - A quantidade de memória disponível para o processo do PHP, em Megabytes. O padrão é 128, que é o suficiente para a maioria das aplicações PHP. Algumas mais complexas podem precisar de mais.

  • display_errors = Off - Essa diretiva diz ao PHP para incluir, ou não, qualquer mensagem de erro na corrente que ele retorna ao servidor Web. Se isso for configurado para "On", então o PHP irá enviar ao web server qualquer classe de erro que você definir na diretiva error_reporting como parte da corrente de erro. Por razões de segurança é recomendado que seja configurada para "Off" em servidores de produção, para não revelar qualquer informação de segurança sensível que é geralmente incluída nas mensagens de erro.

  • open_basedir = <caminhos para diretórios, separados por ponto-e-vírgula>, ex: openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp". Essa diretiva especifica os caminhos para os diretórios onde o PHP pode executar operações de sistema de arquivos. Qualquer operação fora desses caminhos especificados resultará em um erro. Essa diretiva é especificamente útil para travar a instalação do PHP dentro de ambientes de hospedagem compartilhados para previnir scripts PHP de acessarem quaisquer arquivos fora do diretório raiz do web site.

  • upload_max_filesize = ###M e post_max_size = ###M - O tamanho máximo permitido de um arquivo subido e dados de post, respectivamente. Os valores dessas diretivas devem ser aumentados em aplicações PHP que precisam fazer grandes uploads, como por exemplo arquivo de fotos e vídeos.

O PHP agora está configurado no seu sistema. O próximo passo é escolher um servidor web, e fazer com que ele rode o PHP. Escolha um servidor na tabela de conteúdos.

Além de rodar o PHP em um servidor web, o PHP pode rodar a partir da linha de comando assim como um script .BAT. Veja PHP de linha de comando no Microsoft Windows para mais detalhes.

Microsoft IIS

Esssa seção contém instruções específicas de instalaçaõ do PHP no Microsoft Internet Information Services (IIS).

Microsoft IIS 5.1 and IIS 6.0

This section contains instructions for manually setting up Internet Information Services (IIS) 5.1 and IIS 6.0 to work with PHP on Microsoft Windows XP and Windows Server 2003. For instructions on setting up IIS 7.0 and later versions on Windows Vista, Windows Server 2008, Windows 7 and Windows Server 2008 R2 refer to Microsoft IIS 7.0 and later.

Configuring IIS to process PHP requests

Download and install PHP in accordance to the instructions described in manual installation steps

Nota:

Non-thread-safe build of PHP is recommended when using IIS. The non-thread-safe builds are available at » PHP for Windows: Binaries and Sources Releases.

Configure the CGI- and FastCGI-specific settings in php.ini file as shown below:

Exemplo #2 CGI and FastCGI settings in php.ini

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

Download and install the » Microsoft FastCGI Extension for IIS 5.1 and 6.0. The extension is available for 32-bit and 64-bit platforms - select the right download package for your platform.

Configure the FastCGI extension to handle PHP-specific requests by running the command shown below. Replace the value of the "-path" parameter with the absolute file path to the php-cgi.exe file.

Exemplo #3 Configuring FastCGI extension to handle PHP requests

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"

This command will create an IIS script mapping for *.php file extension, which will result in all URLs that end with .php being handled by FastCGI extension. Also, it will configure FastCGI extension to use the executable php-cgi.exe to process the PHP requests.

Nota:

At this point the required installation and configuration steps are completed. The remaining instructions below are optional but highly recommended for achieving optimal functionality and performance of PHP on IIS.

Impersonation and file system access

It is recommended to enable FastCGI impersonation in PHP when using IIS. This is controlled by the fastcgi.impersonate directive in php.ini file. When impersonation is enabled, PHP will perform all the file system operations on behalf of the user account that has been determined by IIS authentication. This ensures that even if the same PHP process is shared across different IIS web sites, the PHP scripts in those web sites will not be able to access each others' files as long as different user accounts are used for IIS authentication on each web site.

For example IIS 5.1 and IIS 6.0, in its default configuration, has anonymous authentication enabled with built-in user account IUSR_<MACHINE_NAME> used as a default identity. This means that in order for IIS to execute PHP scripts, it is necessary to grant IUSR_<MACHINE_NAME> account read permission on those scripts. If PHP applications need to perform write operations on certain files or write files into some folders then IUSR_<MACHINE_NAME> account should have write permission to those.

To determine which user account is used by IIS anonymous authentication, follow these steps:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. Expand the list of web sites under the "Web Sites" node in the tree view, right-click on a web site that is being used and select "Properties";

  3. Click the "Directory Security" tab;

  4. Take note of a "User name:" field in the "Authentication Methods" dialog

Anonymous authenication for IIS 5.1 and IIS 6.0

To modify the permissions settings on files and folders, use the Windows Explorer user interface or icacls command.

Exemplo #4 Configuring file access permissions

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

Set index.php as a default document in IIS

The IIS default documents are used for HTTP requests that do not specify a document name. With PHP applications, index.php usually acts as a default document. To add index.php to the list of IIS default documents, follow these steps:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. Right-click on the "Web Sites" node in the tree view and select "Properties";

  3. Click the "Documents" tab;

  4. Click the "Add..." button and enter "index.php" for the "Default content page:".

Setting index.php as default document for IIS

FastCGI and PHP Recycling configuration

Configure IIS FastCGI extension settings for recycling of PHP processes by using the commands shown below. The FastCGI setting instanceMaxRequests controls how many requests will be processed by a single php-cgi.exe process before FastCGI extension shuts it down. The PHP environment variable PHP_FCGI_MAX_REQUESTS controls how many requests a single php-cgi.exe process will handle before it recycles itself. Make sure that the value specified for FastCGI InstanceMaxRequests setting is less than or equal to the value specified for PHP_FCGI_MAX_REQUESTS.

Exemplo #5 Configuring FastCGI and PHP recycling

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

Configuring FastCGI timeout settings

Increase the timeout settings for FastCGI extension if there are applications that have long running PHP scripts. The two settings that control timeouts are ActivityTimeout and RequestTimeout. Refer to » Configuring FastCGI Extension for IIS 6.0 for more information about those settings.

Exemplo #6 Configuring FastCGI timeout settings

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90

Changing the Location of php.ini file

PHP searches for php.ini file in several locations and it is possible to change the default locations of php.ini file by using PHPRC environment variable. To instruct PHP to load the configuration file from a custom location run the command shown below. The absolute path to the directory with php.ini file should be specified as a value of PHPRC environment variable.

Exemplo #7 Changing the location of php.ini file

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"

Microsoft IIS 7.0 and later

This section contains instructions for manually setting up Internet Information Services (IIS) 7.0 and later to work with PHP on Microsoft Windows Vista SP1, Windows 7, Windows Server 2008 and Windows Server 2008 R2. For instructions on setting up IIS 5.1 and IIS 6.0 on Windows XP and Windows Server 2003 refer to Microsoft IIS 5.1 and IIS 6.0.

Enabling FastCGI support in IIS

FastCGI module is disabled in default installation of IIS. The steps to enable it differ based on the version of Windows being used.

To enable FastCGI support on Windows Vista SP1 and Windows 7:

  1. In the Windows Start Menu choose "Run:", type "optionalfeatures.exe" and click "Ok";

  2. In the "Windows Features" dialog expand "Internet Information Services", "World Wide Web Services", "Application Development Features" and then enable the "CGI" checkbox;

  3. Click OK and wait until the installation is complete.

Enabling FastCGI support for IIS7 on Windows Vista SP1 and Windows 7

To enable FastCGI support on Windows Server 2008 and Windows Server 2008 R2:

  1. In the Windows Start Menu choose "Run:", type "CompMgmtLauncher" and click "Ok";

  2. If the "Web Server (IIS)" role is not present under the "Roles" node, then add it by clicking "Add Roles";

  3. If the "Web Server (IIS)" role is present, then click "Add Role Services" and then enable the "CGI" checkbox under "Application Development" group;

  4. Click "Next" and then "Install" and wait for the installation to complete.

Enabling FastCGI support on Windows Server 2008 and Windows Server 2008 R2

Configuring IIS to process PHP requests

Download and install PHP in accordance to the instructions described in manual installation steps

Nota:

Non-thread-safe build of PHP is recommended when using IIS. The non-thread-safe builds are available at » PHP for Windows: Binaries and Sources Releases.

Configure the CGI- and FastCGI-specific settings in php.ini file as shown below:

Exemplo #8 CGI and FastCGI settings in php.ini

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

Configure IIS handler mapping for PHP by using either IIS Manager user interface or a command line tool.

Using IIS Manager user interface to create a handler mapping for PHP

Follow these steps to create an IIS handler mapping for PHP in IIS Manager user interface:

  1. In the Windows Start Menu choose "Run:", type "inetmgr" and click "Ok";

  2. In the IIS Manager user interface select the server node in the "Connections" tree view;

  3. In the "Features View" page open the "Handler Mappings" feature;

    Create IIS handler mapping for PHP : Locate Handler Mappings

  4. In the "Actions" pane click "Add Module Mapping...";

  5. In the "Add Module Mapping" dialog enter the following:

    • Request path: *.php
    • Module: FastCgiModule
    • Executable: C:\[Path to PHP installation]\php-cgi.exe
    • Name: PHP_via_FastCGI

  6. Click "Request Restrictions" button and then configure the mapping to invoke handler only if request is mapped to a file or a folder;

  7. Click OK on all the dialogs to save the configuration.

Create IIS handler mapping for PHP : Add Handler Mapping

Using command line tool to create a handler mapping for PHP

Use the command shown below to create an IIS FastCGI process pool which will use php-cgi.exe executable for processing PHP requests. Replace the value of the fullPath parameter with the absolute file path to the php-cgi.exe file.

Exemplo #9 Creating IIS FastCGI process pool

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI ^
/+[fullPath='c:\PHP\php-cgi.exe']

Configure IIS to handle PHP specific requests by running the command shown below. Replace the value of the scriptProcessor parameter with the absolute file path to the php-cgi.exe file.

Exemplo #10 Creating handler mapping for PHP requests

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers ^
/+[name='PHP_via_FastCGI', path='*.php',verb='*',modules='FastCgiModule',^
scriptProcessor='c:\PHP\php-cgi.exe',resourceType='Either']

This command creates an IIS handler mapping for *.php file extension, which will result in all URLs that end with .php being handled by FastCGI module.

Nota:

At this point the required installation and configuration steps are completed. The remaining instructions below are optional but highly recommended for achieving optimal functionality and performance of PHP on IIS.

Impersonation and file system access

It is recommended to enable FastCGI impersonation in PHP when using IIS. This is controlled by the fastcgi.impersonate directive in php.ini file. When impersonation is enabled, PHP will perform all the file system operations on behalf of the user account that has been determined by IIS authentication. This ensures that even if the same PHP process is shared across different IIS web sites, the PHP scripts in those web sites will not be able to access each other's files as long as different user accounts are used for IIS authentication on each web site.

For example IIS 7, in its default configuration, has anonymous authentication enabled with built-in user account IUSR used as a default identity. This means that in order for IIS to execute PHP scripts, it is necessary to grant IUSR account read permission on those scripts. If PHP applications need to perform write operations on certain files or write files into some folders then IUSR account should have write permission to those.

To determine what user account is used as an anonymous identity in IIS 7 use the following command. Replace the "Default Web Site" with the name of IIS web site that you use. In the output XML configuration element look for the userName attribute.

Exemplo #11 Determining the account used as IIS anonymous identity

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

Nota:

If userName attribute is not present in the anonymousAuthentication element, or is set to an empty string, then it means that the application pool identity is used as an anonymous identity for that web site.

To modify the permissions settings on files and folders, use the Windows Explorer user interface or icacls command.

Exemplo #12 Configuring file access permissions

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

Set index.php as a default document in IIS

The IIS default documents are used for HTTP requests that do not specify a document name. With PHP applications, index.php usually acts as a default document. To add index.php to the list of IIS default documents, use this command:

Exemplo #13 Set index.php as a default document in IIS

%windir%\system32\inetsrv\appcmd.exe set config ^
-section:system.webServer/defaultDocument /+"files.[value='index.php']" ^
/commit:apphost

FastCGI and PHP Recycling configuration

Configure IIS FastCGI settings for recycling of PHP processes by using the commands shown below. The FastCGI setting instanceMaxRequests controls how many requests will be processed by a single php-cgi.exe process before IIS shuts it down. The PHP environment variable PHP_FCGI_MAX_REQUESTS controls how many requests a single php-cgi.exe process will handle before it recycles itself. Make sure that the value specified for FastCGI InstanceMaxRequests setting is less than or equal to the value specified for PHP_FCGI_MAX_REQUESTS.

Exemplo #14 Configuring FastCGI and PHP recycling

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='c:\php\php-cgi.exe'].instanceMaxRequests:10000

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/+"[fullPath='C:\{php_folder}\php-cgi.exe'].environmentVariables.^
[name='PHP_FCGI_MAX_REQUESTS',value='10000']"

FastCGI timeout settings

Increase the timeout settings for FastCGI if it is expected to have long running PHP scripts. The two settings that control timeouts are activityTimeout and requestTimeout. Use the commands below to change the timeout settings. Make sure to replace the value in the fullPath parameter to contain the absolute path to the php-cgi.exe file.

Exemplo #15 Configuring FastCGI timeout settings

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].activityTimeout:"90"  /commit:apphost

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].requestTimeout:"90"  /commit:apphost

Changing the Location of php.ini file

PHP searches for php.ini file in several locations and it is possible to change the default locations of php.ini file by using PHPRC environment variable. To instruct PHP to load the configuration file from a custom location run the command shown below. The absolute path to the directory with php.ini file should be specified as a value of PHPRC environment variable.

Exemplo #16 Changing the location of php.ini file

appcmd.exe set config  -section:system.webServer/fastCgi ^
/+"[fullPath='C:\php\php.exe',arguments=''].environmentVariables.^
[name='PHPRC',value='C:\Some\Directory\']" /commit:apphost

Apache 1.3.x no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do Apache 1.3.x com o PHP nos sistemas Microsoft Windows. Também há

Nota:

Por favor, leia os passos da instalação manual primeiro!

Existem duas maneiras de configurar o PHP para funcionar com o Apache 1.3.x no Windows. Uma é usar o binário CGI (php.exe para o PHP 4 e php-cgi.exe para o PHP 5), e a outra é usar o DLL do módulo do Apache. Em ambos os casos você precisa editar o arquivo httpd.conf para configurar o Apache para funcionar com o PHP e, então, reiniciar o servidor.

Vale a pena notar que agora o módulo SAPI tornou-se mais estável no Windows, nós recomendamos o seu uso ao invés do binário CGI, uma vez que é mais transparente e seguro.

Embora existam algumas pequenas variações de configuração do PHP com o Apache, elas são simples o suficiente para ser usado por iniciantes. Por favor, consulte a Documentação do Apache para mais diretivas de configuração.

Depois de mudar o arquivo de configuração, lembre-se de reiniciar o servidor, por exemplo, executando NET STOP APACHE seguido de NET START APACHE, se você rodar o Apache como um Windows Service, ou user os atalhos normais.

Nota: Lembre que ao adicionar caminhos nos arquivos de configuração do Apache no Windows, todos as contrabarras como em c:\directory\file.ext devem ser convertidos para barras: c:/directory/file.ext. Uma barra terminal também pode ser necessário para diretórios.

Instalando como um módulo do Apache

Você deve adicionar as seguintes linhas para o seu arquivo httpd.conf:

Exemplo #17 PHP como um módulo do Apache 1.3.x

Presume-se que o PHP esteja instalado em c:\php. Ajuste o caminho se não for o seu caso.

Para o PHP 4:

# Adicione ao fim da seção LoadModule
# Não se esqueça de copiar esse arquivo do diretório sapi
LoadModule php4_module "c:/php/php4apache.dll"

# Adicione ao fim da seção AddModule
AddModule mod_php4.c

Para o PHP 5:

# Adicione ao fim da seção LoadModule
LoadModule php5_module "C:/php/php5apache.dll"

# Adicione ao fim da seção AddModule
AddModule mod_php5.c

Para ambos:

# Adicione essa linha dentro das tags condicionais <IfModule mod_mime.c>
AddType application/x-httpd-php .php

# Para arquivos .phps com highlight de sintaxe adicione também
AddType application/x-httpd-php-source .phps

Instalando como um binário CGI

Se você dezipou o pacote PHP para o diretório C:\php\ como descrito na seção Passos da Instalação Manual, você precisa inserir as seguintes linhas ao arquivo de configuração do Apache para configurar o uso do binário CGI:

Exemplo #18 PHP e Apache 1.3.x como CGI

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# Para o PHP 4
Action application/x-httpd-php "/php/php.exe"

# Para o PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"

# especifica o diretório onde o php.ini está
SetEnv PHPRC C:/php
Note que a segunda linha na lista acima pode ser encontrada na versão padrão do httpd.conf, mas está comentada. Lembre-se de substituir também o c:/php/ pelo caminho do PHP no seu sistema.

Aviso

Um servidor implantado em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Se você gostaria de apresentar os códigos-fonte dos PHP com highlight de sintaxe, não exites uma opção conveniente como na versão de módulo. Se você escolheu configura o Apache para usar o PHP como um binário CGI, você precisará usar a função highlight_file(). Para fazer isso, simplesmente crie um script PHP e adicione esse código: <?php highlight_file('some_php_script.php'); ?>.

Apache 2.x no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do Apache 2.x com o PHP nos sistemas Microsoft Windows.Também há

Nota:

Por favor, leia os passos da instalação manual primeiro!

Nota: Suporte a Apache 2.2

Usuários do Apache 2.2 devem notar que o arquivo DLL para o Apache 2.2 é chamado php5apache2_2.dll em vez de php5apache2.dll e é disponível apenas para versões do PHP 5.2.0 e posteriores.

Encorajamos que você olhe a » Documentação do Apache para entender o básico do Servidor Apache 2.x. Também considere ler as » notas específicas para o Windows para o Apache 2.x antes de continuar.

O Apache 2.x foi desenhado para rodar nas versões Windows do do tipo servidoras, como Windows NT 4.0, Windows 2000, Windows XP e Windows 7. O Apache 2.x funcionará rasoavelmente no Windows 9x, mas o suporte nessa plataforma é incompleto, e algumas coisas não funcionarão corretamente. Não há como remediar essas situações.

Baixe a versão mais recente do »  Apache 2.x e uma versão apropriada do PHP. Siga os Passos da Instalação Manual e volte para continuar com a integração do PHP e Apache.

Existem três maneiras de rodar o PHP sob o Apache 2.x no Windows. O PHP como módulo (handler), como CGI ou como FastCGI.

Nota: Lembre que ao adicionar caminhos nos arquivos de configuração do Apache no Windows, todos as contrabarras como em c:\directory\file.ext devem ser convertidos para barras: c:/directory/file.ext. Uma barra terminal também pode ser necessário para diretórios.

Instalando como um módulo do Apache

Você precisa inserir essas duas linhas ao arquivo de configuração de Apache httpd.conf para configurar o módulo PHP para o Apache 2.0:

Exemplo #19 PHP e Apache 2.0 como Módulo

#
LoadModule php5_module "c:/php/php5apache2.dll"
AddHandler application/x-httpd-php .php

# configure o caminho para o arquivo php.ini
PHPIniDir "C:/php"

Nota: Lembre-se de substituir o caminho atual do PHP em vez de C:/php/ dos exemplos acima. Use php5apache2.dll ou php5apache2_2.dll na sua diretiva e verifique que o arquivo referenciado está localizado de fato no caminho apontado na diretiva.

A configuração acima habilitará a manipulação do PHP por qualquer arquivo com a extensão, mesmo que existam outras extensões. Por exemplo, um arquivo chamadoexample.php.txt será executado pelo manipulador do PHP. Para garantir que apenas arquivos com a extensão terminal .php sejam executados então utilize a seguinte configuração:

<FilesMatch \.php$>
      SetHandler application/x-httpd-php
 </FilesMatch>

Rodando o PHP como CGI

Consulte a » Documentação CGI do Apache para melhor compreensão de se rodar CGIs no Apache.

Para rodar o PHP como CGI você precisará colocar seus arquivos php-cgi em um diretório assim designado, utilizando para isso a diretiva ScriptAlias.

Terá também de inserir uma linha #! nos arquivos PHP, apontando para a localização do executável do PHP:

Exemplo #20 PHP e Apache 2.x como CGI

#!C:/php/php.exe
<?php
  phpinfo();
?>

Aviso

Um servidor implantado em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Rodando o PHP como FastCGI

Rodar como FastCGI tem vantangens do que rodar como CGI. A configuração é simples:

Obtenha o mod_fcgid de » http://httpd.apache.org/mod_fcgid/. Executáveis Win32 estão disponíveis para download desse arquivo. Instale o módulo de acordo com as instruções que acompanham o binário.

Configure o seu servidor como mostrado abaixo, tomando cuidado de ajustar quaisquer caminhos de forma a refletir os locais onde estão instalados os componentes no seu sistema:

Exemplo #21 Configurar o Apache para rodar PHP como FastCGI

LoadModule fcgid_module modules/mod_fcgid.so

# Onde está o seu arquivo php.ini?
FcgidInitialEnv PHPRC        "c:/php"

AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php
Arquivos com a extensão .php agora serão executados pelo manipulador FastCGI do PHP.

Servidores Sun, iPlanet e Netscape no Microsoft Windows

Essa seção contem notas e dicas específicas para instalação do PHP em servidores Sun Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Windows.

A partir do PHP 4.3.3 você pode usar seus scripts PHP com o módulo NSAPI para o Apache também estão disponíveis. Para suporte nos servidores web atuais

Configurando como CGI em servidores Sun, iPlanet e Netscape

Para instalar o PHP como um tratador de CGI, faça o seguinte:

  • Copie o arquivo php4ts.dll para a pasta raiz do seu sistema (o diretório onde você instalou o Windows)
  • Faça uma associação de arquivo a partir da linha de comando. Digite as duas linhas a seguir:

    assoc .php=PHPScript
    ftype PHPScript=c:\php\php.exe %1 %*

  • No Netscape Enterprise Administration Server crie um diretório dummy para o shellcgi e remova-o em seguida (esse passo cria 5 linhas importantes no obj.conf e permite que o servidor web trate scripts shellcgi).
  • No Netscape Enterprise Administration Server crie um novo tipo mime (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).
  • Faça isso para cada instância do servidor web que você quiser que rode o PHP

Mais detalhes sobre configuração do PHP como um executável CGI pode ser encontrado aqui: » http://benoit.noss.free.fr/php/install-php.html

Configurando como NSAPI em servidores Sun, iPlanet e Netscape

Para instalar o PHP com NSAPI, faça o seguinte:

  • Copie php4ts.dll para a pasta raiz do seu sistema (o diretório onde você instalou o Windows)
  • Faça uma associação de arquivo a partir da linha de comando. Digite as duas linhas a seguir:

    assoc .php=PHPScript
    ftype PHPScript=c:\php\php.exe %1 %*

  • No Netscape Enterprise Administration Server crie um novo tipo mime (Category: type, Content-Type: magnus-internal/x-httpd-php, File Suffix: php).
  • Edite o arquivo magnus.conf (para servidores >= 6) ou obj.conf (para servidores < 6) e adicione o seguinte: Você deve colocar as linhas depois de mime types init.

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]
    
    (PHP >= 4.3.3) O parâmetro php_ini é opcional, mas com ele você pode colocar seu arquivo php.ini no diretório de configuração do seu servidor web.

  • Configure o objeto padrão no arquivo obj.conf (para classes de servidor virtual [Sun Web Server 6.0+] no arquivo vserver.obj.conf): Na seção <Object name="default">, coloque essa linha necessariamente após todas as linhas do tipo 'ObjectType' e antes das do tipo 'AddLog':

    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    
    (PHP >= 4.3.3) Como parâmetros adicionais,você pode adicionar alguns valores especiais do arquivo php.ini, por exemplo, você pode atribuir um docroot="/path/to/docroot" específico ao contexto no qual php4_execute é chamado. Para valores booleanos utilize 0/1 como valor, e não "On","Off",... (Isso não funcionará), ex.: zlib.output_compression=1 ao invés de zlib.output_compression="On"

  • Isso só é necessário se você quiser configurar um diretório que só consiste de scripts PHP (como em um diretório cgi-bin):

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    
    Depois disso você pode configurar um diretório na ferramenta de Administração do servidor e atribuir a ele um estilo x-httpd-php. Todos os arquivos neles serão executados como PHP. Isso é bom para esconder o uso do PHP renomeando os arquivos como .html.

  • Reinicie seu servidor web e aplique as mudanças
  • Faça isso para cada instância do servidor web que você quiser que execute o PHP

Nota:

Mais detalhes sobre configurar o PHP como um filtro NSAPI pode ser achado aqui: » http://benoit.noss.free.fr/php/install-php4.html

Nota:

O tamanho de pilha que o PHP usa depende da configuração do servidor web. Se você tiver problemas com scripts muito grandes, é recomendado aumentar esse tamanho com o Administrador do Servidor (na seção "MAGNUS EDITOR").

Ambiente CGI e modificações recomendadas ao arquivo php.ini

É importante quando escrevendo scripts PHP levar em conta o fato que Sun JSWS/Sun ONE WS/iPlanet/Netscape são servidores multithreaded. Por isso, todas as requisições estão sendo executadas no mesmo espaço de processo (o espaço do servidor web) e esse espaço só tem um ambiente. Se você quiser usar variáveis CGI como PATH_INFO, HTTP_HOST etc, não é correto tentar pegá-las da maneira do PHP antigo, usando a função getenv() ou uma maneira similar (registrar globais para o ambiente, $_ENV). Você só iria pegar o ambiente do servidor web sem quaisquer variáveis CGI válidas!

Nota:

Porque existem variáveis CGI (inválidas) no ambiente?

Resposta: Isso é porque você inicializou o processo do servidor a partir do administrador do servidor que executa o script de inicialização do servidor web, você queria iniciar, como um script CGI (um script CGI dentro do administrador do servidor!). Isso é porque o ambiente do servidor tem algumas variáveis CGI do ambiente nele. Você pode testar isso inicializando o servidor web de outra forma que não pelo administrador do servidor. Use a linha de comando como usuário root e inicialize-o manualmente - você verá que não há variáveis ambientes do tipo CGI.

Simplesmente mude seus scripts para pegar variáveis CGI da maneira correta para o PHP 4.x, usando o array superglobal $_SERVER. Se você tiver scripts mais antigos que usem $HTTP_HOST, etc., você deve ligar a diretiva register_globals no arquivo php.ini e mudar a ordem das variáveis também (importante: remova "E" da diretiva, porque você não precisa das variávies de ambiente aqui):

variables_order = "GPCS"
register_globals = On

Uso especial para páginas de erro ou listagens de conteúdo de diretório auto-geradas (PHP >= 4.3.3)

Você pode usar o PHP para gerar as páginas de erro para "404 Not Found" ou similar. Adicione a seguinte linha ao objeto no arquivo obj.conf para cada página de erro que você queira sobrescrever:

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
onde XXX é o código de erro HTTP. Por favor apague qualquer outra diretiva Error que podem interferir com as suas. Se você quiser colocar uma página para todos os erros que podem existir, não informe o parâmetro code. Seu script pode determinar qual o erro pela variável $_SERVER['ERROR_TYPE'].

Outra possibilidade é gerar listagens de conteúdo de diretório. Apenas crie um script PHP que mostre uma listagem do diretório e substitua o valor padrão da linha Service type="magnus-internal/directory" no arquivo obj.conf com a seguinte:

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Tanto para páginas de erro e de listagem de diretório a URI original e a URI traduzida estão nas variáveis $_SERVER['PATH_INFO'] e $_SERVER['PATH_TRANSLATED'].

Nota sobre nsapi_virtual() e subrequisições (subrequests) (PHP >= 4.3.3)

O módulo NSAPI agora suporta a função nsapi_virtual() (sinônimo (alias): virtual()) para fazer subrequisições no servidor web e inserir o resultado em uma página web. O problema é que essa função usa algumas características não documentadas da biblioteca NSAPI.

No Unix, isso não é um problema, porque o módulo procura automaticamente pelas funções necessárias e usa elas se disponíveis. Se não, nsapi_virtual() é desabilitada.

Limitações de tratamento de DLLs no Windows precisam da detecção automática do arquivo ns-httpdXX.dll mais recente. Isso é testado pelos servidores até a versão 6.1. Se uma versão mais nova do servidor Sun é usado, a detecção falha e nsapi_virtual() é desabilitada.

Se esse for o caso, tente o seguinte: Adicione o seguinte parâmetro para php4_init em magnus.conf/obj.conf:

Init fn=php4_init ... server_lib="ns-httpdXX.dll"
onde XX é o número de versão correto da DLL. Para obter esse valor, procure na pasta raiz do servidor para o nome correto da DLL. A DLL com o maior tamanho é a certa.

Você pode verificar o status usando a função phpinfo().

Nota:

Mas esteja avisado: O suporte para nsapi_virtual() é EXPERIMENTAL!!!

Servidor Sambar no Microsoft Windows

Essa seção contem notas e dicas específicas para o » Sambar Server para Windows.

Nota:

Você deve ler os passos de instalação do manual antes!

Essa lista descreve como instalar o módulo ISAPI para que funcione com o servidor Sambar no Windows.

Nota:

Se você deseja usar o PHP para se comunicar com recursos que estão guardados em um computador diferente em sua rede, então você precisará alterar a conta de usuário usada pelo Sambar Server Service. A conta padrão usada pelo Sambar Server Service é LocalSystem, que não tem acesso a recursos remotos. A conta pode ser modifica usando a opção Serviços (Services) dentro do das Ferramentas Administrativas (Administation Tools) do Painel de Controle (Control Panel) do Windows.

Xitami no Microsoft Windows

Essa seção contem notas e dicas específicas para o » Xitami no Windows.

Nota:

Você deve ler os passos de instalação manual primeiro!

Essa lista descreve como configura o binário CGI do PHP para funcionar com Xitami no Windows.

Nota: Importante para usuários que instalaram o CGI

Leia o faq sobre cgi.force_redirect para detalhes importantes. Essa diretiva precisa ser editada para 0. Se você quiser usar $_SERVER['PHP_SELF'] você tem que habilitar a diretiva cgi.fix_pathinfo.

Aviso

Um servidor implantado em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

Compilando a partir dos fontes

Esse capítulo ensina como compilar PHP a partir dos fontes no Windows, usando as ferramentas da Microsoft. Para compilar o PHP com cygwin, veja o Instalação em sistemas Unix.

Veja a documentação no Wiki em: » http://wiki.php.net/internals/windows/stepbystepbuild

Instalação de extensões no Windows

Depois de instalar o PHP e um servidor web no Windows, você provavelmente desejará instalar algumas extensões para ter funcionalidades extras. Você pode escolher quais extensões você quer que o PHP carregue quando é iniciado modificando o arquivo php.ini. Você também pode carregar um módulo dinamicamente no seu script usando dl().

Os DLLs para extensões do PHP são prefixadas com php_.

Muitas extensões são compiladas dentro da versão para Windows. Isso significa que arquivos DLL adicionais, e a diretiva extension, não são utilizadas para carregar essas extensões. A tabela de Extensões PHP lista extensões que requerem, ou costumavam requerer, arquivos DLL adicionais do PHP. Aqui está uma lista das extensões já compiladas dentro do PHP 5.0.4: BCMath, Caledar, COM, Ctype, DOM, FTP, LibXML, Iconv, ODBC, PCRE, Session, SimpleXML, SPL, SQLite, WDDX, XML e Zlib.

A localização padrão que o PHP procura por extensões é C:\php5. Para mudar esta configuração para refletir sua instalação do PHP, edite o arquivo php.ini:

Nota: Se você estiver executando a versão de módulo do servidor do PHP lembre de reiniciar o servidor web para que as mudanças no arquivo php.ini sejam efetivadas.

A tabela a seguir descreve algumas das extensões disponíveis e as dlls adicionais requeridas.

Extensões do PHP
Extensão Descrição Notas
php_bz2.dll Funções de Compressão de bzip2  
php_calendar.dll Funções de Conversão de Calendar  
php_crack.dll Funções de Crack  
php_ctype.dll Família de Funções ctype  
php_curl.dll Biblioteca de Funções de Cliente URL - CURL Requer: libeay32.dll, ssleay32.dll (incluso)
php_dba.dll Camada de Funções de Abstração de Banco de Dados DBA  
php_dbase.dll Funções de dBase  
php_dbx.dll Funções dbx  
php_exif.dll Funções EXIF php_mbstring.dll. e, php_exif.dll devem ser carregados depois de php_mbstring.dll no arquivo php.ini.
php_fbsql.dll Funções FrontBase  
php_fdf.dll FDF: Forms Data Format functions. Requer: fdftk.dll (incluso)
php_filepro.dll Funções de filePro Fornece acesso somente leitura
php_ftp.dll Funções de FTP  
php_gd2.dll Funções da biblioteca de imagens GD GD2
php_gettext.dll Funções de Gettext PHP <= 4.2.0 requer gnu_gettext.dll (incluso), PHP >= 4.2.3 requer libintl-1.dll, iconv.dll (incluso).
php_hyperwave.dll HyperWave functions  
php_iconv.dll Conversão de tabela de caracteres ICONV Requer: iconv-1.3.dll (incluso), iconv.dll
php_ifx.dll Funções de Informix Requer: bibliotecas Informix
php_iisfunc.dll Funções de manuseio de IIS  
php_imap.dll Funções de IMAP POP3 e NNTP  
php_ingres.dll Funções de Ingres II Requer: bibliotecas Ingres
php_interbase.dll Funções de InterBase Requer: gds32.dll (incluso)
php_ldap.dll Funções de LDAP Requer libeay32.dll e ssleay32.dll (inclusos)
php_mbstring.dll Funções de Multi-Byte String  
php_mcrypt.dll Funções de Mcrypt Encryption Requer: libmcrypt.dll
php_mhash.dll Funções de Mhash Requer: libmhash.dll (incluso)
php_mime_magic.dll Funções de Mimetype Requer: magic.mime (incluso)
php_ming.dll Funções Ming para Flash  
php_msql.dll Funções de mSQL Requer: msql.dll (incluso)
php_mssql.dll Funções de MSSQL Requer: ntwdblib.dll (incluso)
php_mysql.dll Funções de MySQL Requer libmysql.dll (incluso)
php_mysqli.dll Funções de MySQLi Requer libmysql.dll (libmysqli.dll in PHP <= 5.0.2) (incluso)
php_oci8.dll Funções de Oracle 8 Requer: bibliotecas Oracle 8.1+ client
php_openssl.dll Funções de OpenSSL Requer: libeay32.dll (incluso)
php_pdf.dll Funções de PDF  
php_pgsql.dll Funções de PostgreSQL  
php_shmop.dll Funções de Memória Compartilhada  
php_snmp.dll Funções de get and walk de SNMP Apenas no NT!
php_soap.dll Funções de SOAP PHP >= 5.0.0
php_sockets.dll Funções de Socket Nenhuma
php_sybase_ct.dll Funções de Sybase Requer: bibliotecas de cliente do Sybase
php_tidy.dll Funções de Tidy  
php_tokenizer.dll Funções de Tokenizer  
php_w32api.dll Funções W32api None
php_xmlrpc.dll Funções de XML-RPC Requer: iconv.dll (incluso)
php_xslt.dll XSLT functions Requer sablot.dll, expat.dll, iconv.dll (inclusos).
php_yaz.dll Funções do YAZ Requer: yaz.dll (incluso)
php_zip.dll Funções para Arquivos Zip Acesso apenas de leitura
php_zlib.dll Funções de compressão de ZLib Integrado desde o PHP 4.3.0

Command Line PHP on Microsoft Windows

This section contains notes and hints specific to getting PHP running from the command line for Windows.

Nota:

You should read the manual installation steps first!

Getting PHP to run from the command line can be performed without making any changes to Windows.

C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

But there are some easy steps that can be followed to make this simpler. Some of these steps should already have been taken, but are repeated here to be able to provide a complete step-by-step sequence.

Following these steps will allow PHP scripts to be run from any directory without the need to type the PHP executable or the .PHP extension and all parameters will be supplied to the script for processing.

The example below details some of the registry changes that can be made manually.

Exemplo #24 Registry changes

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\PHP5\\php-win.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\PHP5\\php.exe\" -f \"%1\" -- %~2"

With these changes the same command can be written as:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
or, if your "C:\PHP Scripts" path is in the PATH environment variable:
script -arg1 -arg2 -arg3

Nota:

There is a small problem if you intend to use this technique and use your PHP scripts as a command line filter, like the example below:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
or
dir | script -arg1 -arg2 -arg3
You may find that the script simply hangs and nothing is output. To get this operational, you need to make another registry change.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
Further information regarding this issue can be found in this » Microsoft Knowledgebase Article : 321788. As of Windows 10, this setting seems to be reversed, making the default install of Windows 10 support inherited console handles automatically. This »  Microsoft forum post provides the explanation.


Instalação no Windows
PHP Manual