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.
Para instalar o PHP como um tratador de CGI, faça o seguinte:
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 %*
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
Para instalar o PHP com NSAPI, faça o seguinte:
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 %*
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"]
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 ...]
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>
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").
É 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
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...]
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...]
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"
Você pode verificar o status usando a função phpinfo().
Nota:
Mas esteja avisado: O suporte para nsapi_virtual() é EXPERIMENTAL!!!