Sun, iPlanet e servidores Netscape no Solaris da Sun
Essa seção contem notas e dicas específicas para instação do PHP nos servidores
un Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Solaris.
A partir do PHP 4.3.3, você pode usar scripts PHP com o
módulo NSAPI para
gerar listagem de diretórios
e páginas de erro personalizadas. Funções adicionais para compatibilidade
com o Apache também estão disponíveis. Para suporte nos webservers atuais, leia
a nota sobre sub-requisições.
Você pode achar mais informações sobre como instalar o PHP para o
Servidor Netscape Enterprise (NES) aqui:
» http://benoit.noss.free.fr/php/install-php4.html
Para compilar o PHP com servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape,
entre o diretório apropriado de instalação para a opção
--with-nsapi=[DIR]
O diretório padrão é, normalmente
/opt/netscape/suitespot/.
Por favor, leia também /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
-
Instale os seguintes pacotes de »
http://www.sunfreeware.com/ ou outro site de download:
- autoconf-2.13
- automake-1.4
- bison-1_25-sol26-sparc-local
- flex-2_5_4a-sol26-sparc-local
- gcc-2_95_2-sol26-sparc-local
- gzip-1.2.4-sol26-sparc-local
- m4-1_4-sol26-sparc-local
- make-3_76_1-sol26-sparc-local
-
mysql-3.23.24-beta (se você quiser suporte ao MySQL)
- perl-5_005_03-sol26-sparc-local
- tar-1.13 (GNU tar)
-
Assegure-se que seu PATH inclue os diretórios apropriados
PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin
E está disponível para o seu sistema export PATH
.
-
gunzip php-x.x.x.tar.gz
(se você tiver uma distribuição .gz,
caso contrário vá para o passo 4).
-
tar xvf php-x.x.x.tar
-
Mude para o diretório recém-criado:
cd ../php-x.x.x
-
Para o passo seguinte, assegure-se de que
/opt/netscape/suitespot/ é
onde o seu servidor Netscape está instalado. Caso contrário, mude o
comando abaixo para o caminho correto e execute:
./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc
-
Execute make seguido de make install.
Depois de fazer a instalação básica e ler o arquivo readme apropriado,
você pode precisar executar alguns passos extras de configuração.
Instruções de Configuração para o Sun/iPlanet/Netscape
Primeiramente, você pode preciasr adicionar alguns caminhos para a váriavel de ambiente
LD_LIBRARY_PATH para que o servidor ache as bibliotecas compartilhadas. A melhor
maneira de fazer isso é no script de inicialização do ser servidor web. Esse script normalmente está
localizado em: /caminho/para/servidor/https-nome_do_servidor/start.
Você pode precisar também de editar os arquivos de configuração que estão
localizados em: /caminho/para/servidor/https-nome_do_servidor/config/.
-
Adicione a seguinte linha no arquivo mime.types (você pode fazer
isso pelo servidor de administração):
type=magnus-internal/x-httpd-php exts=php
-
Edite o arquivo magnus.conf (para servidores >= 6) ou
o arquivo obj.conf (para servidores < 6) e adicione a seguinte
biblioteca compartilhada que pode variar dependendo do seu sistema, ela se parecererá com
/opt/netscape/suitespot/bin/libphp4.so. Você deve
colocar as seguintes linhas após mime types init
.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/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 config do seu servidor web.
-
Configure o objeto padrão no arquivo obj.conf
(para classes de servidor virtuais [versão 6.0+] no
arquivo vserver.obj.conf):
<Object name="default">
.
.
.
.#NOTA Essa linha deve acontecer após todos as linhas 'ObjectType' e antes de todas as linas 'AddLog'
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
.
.
</Object>
(PHP >= 4.3.3) Como parâmetros adicionais, você pode acrescentar valores
especiais do php.ini, por exemplo, você pode editar um
docroot="/path/to/docroot"
específico
para o contexto php4_execute
chamado. Para valores
booleanos, use 0/1 como valor, não
"On","Off",...
(isso não funcionará corretamente) ,ex.:
zlib.output_compression=1
ao invés de
zlib.output_compression="On"
-
Isso só é necessários se você quiser configurar um diretório que apenas consiste de
scripts PHP (assim como 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 que você pode configurar um diretório no servidor de Administração e atribuir a ele
o estilo x-httpd-php
. Todos os arquivo no diretório serão executados como PHP.
Isso é bom para esconder uso do PHP renomeando os arquivos para .html.
-
Configuração de autenticação: autenticação do PHP não pode ser usada com qualquer
outra autenticação. TODA AUTENTICAÇÃO E PASSADA PARA O SEU SCRIPT PHP.
Para configurar autenticação via PHP para o servidor todo, adicione a
seguinte linha para o seu objeto padrão:
<Object name="default">
AuthTrans fn=php4_auth_trans
.
.
.
</Object>
-
Para usar autenticação via PHP em apenas um diretório, adicione o seguinte:
<Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>
Nota:
O tamanho da pilha que o PHP usa depende da configuração do servidor web. Se você tiver
problemas com scripts PHP muito grandes, é recomendado aumentar o tamanho da pilha com o Admin Server
(na seção "MAGNUS EDITOR").
Ambiente CGI e modificações recomendadas ao arquivo php.ini
É importante ter em mente quando escrever scripts PHP que os servidores web
Sun JSWS/Sun ONE WS/iPlanet/Netscape são multithreaded. Por isso, todas as requisições
estão rodando no mesmo espaço de processo (o espaço do servidor web
em si) 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 fazer da maneira como PHP antigo faz, com
a função getenv() ou de maneira similar (registrando globais
ao ambiente, $_ENV). Você só pegaria o ambiente
do servidor web sem qualquer variáveis CGI válidas.
Nota:
Por que existem variáveis CGI inválidas no ambiente?
Resposta: Isso é porque você iniciou o processo do servidor do admin server
que roda o script de iniciação do mesmo, você queria iniciar como um script CGI
(um script CGI dentro do admin server!). Isso é porque o ambiente do
servidor web iniciado tem algumas variáveis CGI de ambiente nele. Você pode testar
isso iniciando o servidor web sem ser do admin server. Use
a linha de comando como usuário root e inicie-o manualmente - você verá que
não exite nenhuma variável CGI de ambiente.
Simplesmente mudando seus scripts para pegar variáveis CGI é a maneira correta para
o PHP 4.x usando o superglobal $_SERVER. Se você tiver
scripts velhos que usam $HTTP_HOST, etc., você deve ligar
register_globals
no arquivo php.ini e mudar a ordem das
variáveis também (importante: remova "E"
de lá,
porque voe não precisa do ambiente aqui):
variables_order = "GPCS"
register_globals = On
Uso especial para páginas de erro e listagem 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 similares. Adicione a seguinte linha no objeto do arquivo obj.conf para
cada página de erro que você quiser sobrescrever:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
Onde
XXX
é o código do erro HTTP. Por favor remova
qualquer outra diretiva
Error
que possa interferir com as suas.
Se você quiser colocar uma página para todos os erros que podem existir, tire
o parâmetro
code
. Seu script pode pegar o código do erro
com
$_SERVER['ERROR_TYPE'].
Outra possibilidade é criar uma listagem do diretório auto-gerada.
Apenas crie um script PHP que mostra uma listagem do diretório e
substitua o padrão correspondente Service line for
type="magnus-internal/directory"
no arquivo obj.conf pelo seguinte:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Tanto para os erros e as páginas de listagem do diretório a URI original e
a URL traduzida estão nas variáveis
$_SERVER['PATH_INFO'] e
$_SERVER['PATH_TRANSLATED'].
Nota sobre nsapi_virtual() e sub-requisições(PHP >= 4.3.3)
O módulo NSAPI agora suporta a função nsapi_virtual()
(sinônima (alias): virtual())
para fazer sub-requisições no servidor web e inserir o resultado na página web.
Essa função usa algumas funcionalidades não documentadas da biblioteca NSAPI.
No Unix, o módulo procura automaticamente para as funções necessárias e as usa
se estiverem disponíveis. Se não, nsapi_virtual() é desabilitada.
Nota:
Mas esteja avisado: Suporte para nsapi_virtual() é EXPERIMENTAL!!!