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 build 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 e IIS 6.0

Esta seção contém instruções de configuração para que Internet Information Services (IIS) 5.1 ou IIS 6.0 execute PHP no Microsoft Windows XP ou Windows Server 2003. Para instruções em como configurar IIS 7.0 ou versões mais atuais no Windows Vista, Windows Server 2008, Windows 7 e Windows Server 2008 R2 acesse Microsoft IIS 7.0 e posteriores.

Configurando IIS para processar requisições PHP

Faça o download e instale o PHP de acordo com as instruções descritas em instalação manual

Nota:

A compilação non-thread-safe é a recomendada para execução no IIS. As compilações non-thread-safe estão disponíveis em » PHP para Windows: Binários e Fontes.

Realize as configurações específicas para CGI ou FastCGI no arquivo php.ini como mostrado a seguir:

Exemplo #2 Configurações CGI e FastCGI em php.ini

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

Faça o download e a instalação da » extensão FastCGI para Microsoft IIS 5.1 and 6.0. A extensão está disponível para plataformas 32 e 64 bits - selecione a que corresponde à sua plataforma.

Configure a extensão FastCGI para atender as requisições PHP executando o comando a seguir. Substitua o valor do parâmetro "-path" com o caminho absoluto do arquivo php-cgi.exe.

Exemplo #3 Configurando FastCGI para atender às requisições PHP

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

Este comando criará um mapeamento de scipts de extensões *.php que resultará com que todas as URLs que contenham *.php sejam atendidas pela extensão FastCGI. E também configura a extensão FastCGI a usar o executável php-cgi.exe para processar as requisições PHP.

Nota:

Neste ponto os passos necessários para instalação e configuração foram completados. As instruções a seguir são opcionais mas altamente recomendadas para o alcance da melhor perfomance e funcionalidade do PHP no IIS.

Impersonalização e acesso ao sistema de arquivos

É recomendado habilitar a impersonalização do FastCGI no PHP quando executado no IIS. Ele é controlado pela directiva fastcgi.impersonate no arquivo php.ini. Quando impersonalização é habilitada, o PHP executará todas as ações no sistema de arquivos em nome da conta de usuário que foi determinada na autentação do IIS. Isso garante que mesmo que o mesmo processo PHP seja compartilhado por diferentes websites no IIS, os scripts PHP nestes websites não poderão acessar os arquivos uns dos outros desde que contas de usuário para autenticação no IIS sejam diferentes para cada website.

Por exemplo, os IISs 5.1 e 6.0, em sua configuração padrão, possui autenticação anônima habilitada com um usuário pré-criado IUSR_<MACHINE_NAME> usado como identidade padrão. Isso significa que para o IIS executar os scripts PHP é necessário dar privilégios de leitura a estes scripts para o usuário IUSR_<MACHINE_NAME>. Se as aplicações PHP precisarem realizar operações de escrita em determinados arquivos ou escrever arquivos em algum diretório, o usuário IUSR_<MACHINE_NAME> precisa ter os privilégios de escrita necessários no destino.

Para determinar qual conta de usuário é usada pela autenticação anônima do IIS, siga estes passos:

  1. No menu iniciar selecione "Executar:", type "inetmgr" e clique em "Ok";

  2. Expanda a lista de websites sob o nó "Web Sites" no menu em árvore, clique com o botão direito em um website que esteja sendo usado e selecione "Properties";

  3. Clique na aba "Directory Security";

  4. Perceba um campo "User name:" na caixa de diálogo "Authentication Methods"

Autenticação anônima para IIS 5.1 e IIS 6.0

Para modificar as configurações de permissão de arquivos e diretórios, utilize o Windows Exporer ou o comando icacls.

Exemplo #4 Configurando as permissões de acesso de arquivos

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

Defina index.php como o documento padrão no IIS

Os documentos padrão são usados pelo IIS para redirecionamento de requisições HTTP que não especificam o nome do documento. Com as aplicações PHP, index.php normalmente atua como o documento padrão. Para adicionard index.php à lista de documentos padrão IIS, siga estes passos:

  1. No menu iniciar escolha "Executar:", type "inetmgr" e clique em "Ok";

  2. Clique com o botão direito no nó "Web Sites" do menu em árvore e selecione "Properties";

  3. Clique na aba "Documents" ;

  4. Clique no botão "Add..." e informe "index.php" como "Default content page:".

Definindo index.php como o documento padrão no IIS

Configuração de FastCGI e reciclagem PHP

Configure a extensão FastCGI para reciclagem dos processos PHP usando os comandos a seguir. A configuração FastCGI instanceMaxRequests controla quantos requisição serão processadas por um único processo php-cgi.exe antes que a extensão FastCGI se encerre. A variável de ambiente PHP_FCGI_MAX_REQUESTS controla quantas requisições um único processo php-cgi.exe manipulará antes que ele se recicle. Certifique-se que o valor especificado para a configuração FastCGI InstanceMaxRequests seja menor ou igual ao valor especificado para PHP_FCGI_MAX_REQUESTS.

Exemplo #5 Configuração de FastCGI e reciclagem PHP

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

Configurando timeout para FastCGI

Aumente as configurações de timeout para a extensão FastCGI caso existam aplicações com scripts de longa execução. As duas configurações que controlam timeout são ActivityTimeout e RequestTimeout. Verifique » Configurando extensão FastCGI para IIS 6.0 para mais informações sobre estas configurações.

Exemplo #6 Configurando timeout para FastCGI

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

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

Alterando a localização do arquivo php.ini

O PHP procura pelo arquivo php.ini em diversas localizaçõe e é possível alterar a configuração padrão do arquivo php.ini usando a variável de ambiente PHPRC. Para instruir o PHP a carregar o arquivo de configuração de uma localização customizada execute o comando exibido abaixo. O caminho absoluto para o diretório que contém o arquivo php.ini deve ser especificado como um valor na variável de ambiente PHPRC.

Exemplo #7 Alterando a localização do arquivo php.ini

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.

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.

  • Ache o arquivo chamado mappings.ini (no diretório de configuração) no diretório de instalação dp Sambar.

  • Abra o arquivo mappings.ini e adicione a seguinte linha sob [ISAPI]:

    Exemplo #22 Configuração ISAPI do Sambar

    #para o PHP 4
    *.php = c:\php\php4isapi.dll
    
    #para o PHP 5
    *.php = c:\php\php5isapi.dll
    
    (Essa linha presume que o PHP foi instalado em c:\php.)

  • Agora reinicie o servidor Sambar para que as mudanças tenha efeito.

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.

  • Assegure-se que o servidor web está rodando e aponte o seu browser para o console de administração do Xitami (normalmente http://127.0.0.1/admin), e clique em Configuração (Configuration).

  • Navegue para os Filtros (Filters), e ponha a extensão que o PHP deve avaliar (ex.: .php) no campo extensões de Arquivo (.xxx).

  • No comando ou script Filtro (Filter) ponha o caminho e o nome do seu executável CGI, ex.: C:\php\php.exe para o PHP 4, ou C:\php\php-cgi.exe para o PHP 5.

  • Pressione o ícone Salvar (Save).

  • Reinicie o servidor para as mudanças terem efeito.

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: » https://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, 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:

  • Você precisará mudar a configuração extension_dirpara apontar o diretório onde suas extensões estão guardadas, ou onde você colocou os arquivos php_*.dll. Por exemplo:

    extension_dir = C:\php\extensions

  • Habilite a(s) extensão(ões) no arquivo php.ini que você quiser descomentando as linhas extension=php_*.dll. Isso é feito removendo o ; na antes da linha com a extensão que você quer carregar.

    Exemplo #23 Habilitar a extensão Bzip2 para o PHP-Windows

    // Mude a seguinte linha de ...
    ;extension=php_bz2.dll
    
    // ... para
    extension=php_bz2.dll

  • Algumas dessas extensões precisam de DLLs extras para funcionar. Umas poucas podem ser encontradas no pacote de distribuição, na pasta principal, mas algumas (por exemplo o Oracle php_oci8.dll) requer DLLs que não estão incluídas no pacote de distribuição. Não se esqueça de incluir C:\php na variável de ambiente PATH (este processo é explicado noFAQ).

  • Algumas destas dlls não sao embutidas com a distribuição do PHP. Veja a documentação de cada extensão para maiores detalhes. Também leia o manual na sessão entitulada Instalação de extensões PECL para detalhes sobre PECL. Um crestente número de extensões para o PHP são encontradas no PECL, e estas extensões precisam de um download separado.

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_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), ou, a partir da OpenSSL 1.1, libcrypto-*.dll e libssl-*.dll (inclusos)
php_dba.dll Camada de Funções de Abstração de Banco de Dados DBA  
php_dbase.dll Funções de dBase  
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_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_iisfunc.dll Funções de manuseio de IIS  
php_imap.dll Funções de IMAP POP3 e NNTP  
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), ou, a partir da OpenSSL 1.1, libcrypto-*.dll e libssl-*.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_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), ou, a partir da OpenSSL 1.1, libcrypto-*.dll (inclusos)
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_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.

    Nota:

    Both PATH and PATHEXT are important pre-existing system variables in Windows, and care should be taken to not overwrite either variable, only to add to them.

  • Append the location of the PHP executable (php.exe, php-win.exe or php-cli.exe depending upon your PHP version and display preferences) to the PATH environment variable. Read more about how to add your PHP directory to PATH in the corresponding FAQ entry.

  • Append the .PHP extension to the PATHEXT environment variable. This can be done at the same time as amending the PATH environment variable. Follow the same steps as described in the FAQ but amend the PATHEXT environment variable rather than the PATH environment variable.

    Nota:

    The position in which you place the .PHP will determine which script or program is executed when there are matching filenames. For example, placing .PHP before .BAT will cause your script to run, rather than the batch file, if there is a batch file with the same name.

  • Associate the .PHP extension with a file type. This is done by running the following command:

    assoc .php=phpfile
    

  • Associate the phpfile file type with the appropriate PHP executable. This is done by running the following command:

    ftype phpfile="C:\PHP5\php.exe" -f "%1" -- %~2
    

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.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top