Frequently Asked Questions
Veja aqui a resposta às questões mais frequentes.

Alojamento Unix
 

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:

      #!/bin/sh


      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:

      #!/usr/local/bin/perl


      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:

      #!/usr/local/bin/php


      Exemplo:

      #!/usr/local/bin/php
      <?php phpinfo(); ?>




Logotipo PTC Produzido por PTC © Todos os direitos reservados