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

# 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 gerar listagens personalizadas de diretórios e páginas de erro. Funções adicionais para compatibilidade com o Apache também estão disponíveis. Para suporte nos servidores web atuais leia a nota sobre subrequests.

## 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 do `php.ini`, use 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 3.x, 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!!!

Anterior | Principal | Próxima
Apache 2.0.x no Microsoft Windows | Acima | Servidor OmniHTTPd