executa o script cgi do diretório que é um link simbólico

3

Eu tenho um script que está disponível através do Apache que modifica o diretório pai. Ai credo. mybin / a.pl, que modifica o diretório ../data/. Eu gostaria de criar vários apelidos, por exemplo. localhost / www / mybin / a.pl localhost / zzz / mybin / a.pl que modifica diretórios diferentes - como www / data e zzz / data. Eu gostaria de manter uma versão do mybin. Eu tentei criar links simbólicos www / mybin e zzz / mybin que apontam para um único diretório (main / mybin). O problema é que o apache resolve links simbólicos e exectues o script em main / mybin, independentemente do caminho. É possível configurar o apache para que meu script seja chamado de dentro do link simbólico?

    
por agsamek 27.08.2011 / 17:31

2 respostas

2

Eu não acho que a resposta seja encontrada no Apache, mas sim no próprio CGI. O Apache seguirá os links simbólicos, desde que o dono seja o mesmo, que disse que eu olharia para o seu script CGI que você não forneceu.

Meu palpite é que você está usando um caminho relativo ao fazer referência ao diretório de dados que seu script modifica. Se você estiver usando o script com links simbólicos, esta não é uma situação ideal e não aconselhada, já que o caminho relativo será sempre o mesmo que será feito a partir do arquivo em si e não do local do link simbólico.

O que eu normalmente faço quando estou tentando fazer algo assim é usar a variável de ambiente SCRIPT_FILENAME CGI que o Apache transmite. Isso deve ter o caminho que foi chamado, que será o local do symlink. Este caminho será um caminho absoluto de /. Isso terá o nome do script CGI para que você possa extrair isso e, em seguida, anexar ../data ou obter o nome do diretório base das informações do caminho para determinar o diretório de dados apropriado.

    
por 27.08.2011 / 18:21
0

Você pode fazer com que o Apache não siga links simbólicos com Options -FollowSymLinks no diretório que você deseja.

    
por 27.08.2011 / 17:42