 |
Frequently Asked Questions
Veja aqui a resposta às questões mais frequentes.
CGIs
A Telepac possibilita aos clientes desenvolverem
os seus próprios programas impondo
para tal, por motivos de segurança
e de bom funcionamento do serviço,
algumas regras.
Os servidores de alojamento UNIX da Telepac
executam os CGIs que se encontram na directoria
/cgi-bin. Os CGIs podem ser desenvolvidos em Perl, PHP,
Unix Bourne Shell (sh) ou C (NÃO C++).
A linguagem preferida para o desenvolvimento
de CGIs é o Perl. O Perl não
necessita compilação manual,
enquanto o código C tem de ser compilado
antes de ser colocado na directoria /cgi-bin.
Regras
Ao desenvolver CGIs para serem executados
no servidor da Telepac, deve ter em atenção
o seguinte:
- No caso de o programa usar ficheiros
de configuração externos,
devem ficar na mesma directoria que o
programa ou seja, dentro da directoria
cgi-bin.
- Se o programa usar ficheiros temporários,
estes devem ser criados na directoria
indicada pela variável de ambiente
WEB_TMP.
- Deve ter em atenção que
os ficheiros temporários, tal como
o seu nome indica, devem ser apagados
pelo próprio programa quando já
não forem necessários. Caso
contrário, o espaço ocupado
por esses ficheiros será contabilizado
para efeitos de ocupação de espaço.
- Todos os ficheiros gerados pelo programa
(com excepção dos ficheiros
temporários), devem ser criados
na área Web do cliente, abaixo
da directoria public_html. Para
saber o caminho (PATH) desde a root
do servidor até à directoria
public_html, deve usar a variável
de ambiente PATH_TRANSLATED.
- O uso da variável PATH_TRANSLATED
é obrigatório, porque assim
garante-se que, caso haja uma mudança
na estrutura de directorias do servidor,
os programas que manipulam ficheiros na
área Web ficam a funcionar correctamente.
Regras de transferência de CGIs
Ao transferir CGIs para o servidor da Telepac
deve ter em atenção o seguinte:
- O código do programa deve ser
transferido e colocado na directoria
cgi-bin.
- A transferência do programa (script
Perl, PHP4 ou Unix Bourne Shell) deve
ser efectuada em modo ASCII. Alguns
utilitários de FTP possuem a opção
auto. Em testes efectuados verificou-se
que em alguns casos esta opção
transfere o ficheiro em modo binário,
ficando o código do programa corrompido.
- A transferência de um programa
compilado (programa C) deve ser efectuada
em modo binário. Alguns
utilitários de FTP possuem a opção
auto. Em testes efectuados verificou-se
que em alguns casos esta opção
transfere o ficheiro em modo ASCII,
ficando o código do programa corrompido.
- Os ficheiros devem ser colocados com
permissões de execução
para o Owner.
Uso de variáveis de ambiente
O servidor Web disponibiliza variáveis
de ambiente como meio de transmitir informações
aos programas.
Das variáveis de ambiente existentes,
destacamos duas pela sua importância:
- PATH_TRANSLATED
- WEB_TMP
- Uso da Variável PATH_TRANSLATED
A variável PATH_TRANSLATED,
contém o caminho (PATH)
desde a root do servidor (máquina)
até à root do servidor
Web.
Como os CGIs não reconhecem
a root do servidor Web é
necessário, quando o programa
manipula ficheiros situados abaixo da
directoria public_html, indicar
qual o caminho desde a root da
máquina até esse ficheiro.
Esse informação é
dada pelo conteúdo da variável
PATH_TRANSLATED
Exemplo:
Supondo que a root do servidor
do cliente fica em
/appl/httpd/htdocs/public_html
o conteúdo da variável
PATH_TRANSLATED neste caso, será
/appl/httpd/htdocs/public_html/.
Para que a variável PATH_TRANSLATED
possa ser usada é necessário
que, na chamada ao CGI, se coloque uma
barra (/) no final do nome do programa.
Nota:
A não colocação
da barra (/) no final do nome do programa,
implica que a variável PATH_TRANSLATED
fique com valor nulo.
- Uso da Variável de Ambiente
WEB_TMP
A variável de ambiente WEB_TMP
contém o caminho (PATH)
para a directoria de ficheiros temporários
do servidor do cliente (existe uma directoria
por servidor).
O uso da variável WEB_TMP
é mais simples que o uso da variável
PATH_TRANSLATED, constituindo
apenas em ler o seu valor.
Seguem-se alguns exemplos de implementação.
Programas disponíveis
Actualmente as linguagens de scripting
disponíveis nos servidores da Telepac
são Perl 5, e PHP4.
-
sendmail
O programa sendmail encontra-se
em /usr/lib/sendmail.
Envio de E-mail Através do
sendmail
O envio de mensagens por e-mail é,
sem dúvida uma das maiores utilizações
dadas aos CGIs.
Como o programa mais usado em ambientes
UNIX é o sendmail, é
sobre ele que vamos dar alguns exemplos
de utilização.
Existem duas formas de enviar e-mail
através de um programa:
- Escrever a mensagem a enviar num
ficheiro temporário, redireccionar
o conteúdo desse ficheiro para
o programa sendmail e em seguida
apagar o ficheiro;
- Abrir o programa em modo pipe
e escrever directamente a mensagem
para o file descriptor usado.
Vamos apresentar alguns exemplos de
aplicação para o segundo
caso, visto este ser o mais usado:
-
mailx
O programa mailx encontra-se
em /usr/bin/mailx.
Envio de E-mail Através do
mailx
O envio de mensagens por e-mail é,
sem dúvida uma das maiores utilizações
dadas aos CGIs.
Tal como o sendmail, o mailx
também permite enviar e-mail.
Vamos apresentar alguns exemplos de
envio de e-mail com o programa mailx:
Scripts em UNIX Bourne Shell (sh)
Os CGIs devem ser colocados na directoria
cgi-bin do servidor Web.
A transferência deverá ser
efectuada em modo ASCII (e não em
modo binário).
Os comandos shell disponíveis são:
|
/usr/bin/date
/usr/bin/false
/usr/bin/ls
/usr/bin/mailx
/usr/bin/pwd
/usr/lib/sendmail.
|
A primeira linha de cada scripts tem de
ser:
Lembre-se sempre de incluir:
|
echo "Content-type: text/html\n\n"
|
Exemplo:
|
#!/bin/sh
echo "Content-type: text/html\n\n"
echo "Hello World\n"
exit 0
|
Scripts em Perl
Os CGIs devem ser colocados na directoria
/cgi-bin do servidor Web.
A transferência deverá ser
efectuada em modo ASCII (e não em
modo binário).
A primeira linha de cada scripts tem de
ser:
Lembre-se sempre de incluir:
|
print "Content-type: text/html\n\n"
|
, ou em alternativa de utilizar o módulo
perl CGI.pm. Caso contrário
os CGIs não serão correctamente
executados e resultado será uma mensagem
de erro do servidor (Internal Server Error).
Exemplo:
|
#!/usr/local/bin/perl
use CGI qw(:cgi-lib :standard);
print header ();
print "Hello World\n";
exit 0;
|
Scripts em PHP4
Os CGIs devem ser colocados na directoria
cgi-bin do servidor Web.
A transferência deverá ser
efectuada em modo ASCII (e não em
modo binário).
A primeira linha de cada scripts tem de
ser:
Exemplo:
|
#!/usr/local/bin/php
<?php phpinfo(); ?>
|
|