404 Erro em um arquivo que existe?

5

Um script faz uma solicitação GET ao meu URL da seguinte forma:

http://mydomain.com/cgi-bin/uu_ini_status_audios.pl?tmp_sid=b742be1d131c4d32237a9f1fcdca659e&rnd_id=0.2363453360320319

No entanto, recebo um 404 imediatamente:

The requested URL /cgi-bin/uu_ini_status_audios.pl was not found on this server.

Mas esse script existe no meu servidor, eu posso ver o arquivo! Tem as permissões corretas (dei um 777 para ter certeza). Também é de propriedade do meu usuário apache e está no grupo apache.

O que eu estou perdendo?

Obrigado por qualquer ajuda sobre isso!

Atualizar

Eu pensei que teria sido um htaccess (reescrever), mas não acho que seja mais. Eu tentei colocar um arquivo index.php lá e tentar acessá-lo através do meu URL, mas eu não posso nem fazer isso! Eu tentei isso:

http://mydoamin.com/cgi-bin/index.php - mesmo erro 404! Eu recebo isso no log myerror:

[Tue Sep 14 14:42:49 2010] [error] [client xx.xxx.xx.xxx] script not found or unable to stat: /var/www/vhosts/mydomain.com/cgi-bin

Arquivo Access_log:

xx.xxx.xx.xxx - - [14/Sep/2010:14:48:25 +0200] "GET /cgi-bin/index.php HTTP/1.1" 404 475 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 (.NET CLR 3.5.30729)"

Atualização 2

Meu arquivo htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/ - [L]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]
RewriteRule ^search/(.*)/(.*)/(.*)/(.*) /search.php?searchfor=$1&sortby=$2&page=$3&searchterm=$4
RewriteRule ^confirmemail/(.*) /confirmemail.php?code=$1
RewriteRule ^resetpassword/(.*) /resetpassword.php?code=$1
RewriteRule ^resendconfirmation/(.*) /resendconfirmation.php?userid=$1
RewriteRule ^categories/ /categories.php
RewriteRule ^([-_~*a-zA-Z0-9]+)(\/)?$ /memberprofile.php?username=$1
RewriteRule ^browse/audios/(.*)/(.*)/(.*)/(.*) /audios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^browse/categories/audios/(.*)/(.*)/(.*)/(.*) /categoryaudios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^audios/(.*)/(.*) /playaudio.php?audioid=$1&title=$2
RewriteRule ^download/audio/(.*)/(.*) /downloadaudio.php?AUDIOID=$1&title=$2
RewriteRule ^members/audios/(.*)/(.*) /memberaudios.php?pid=$1&username=$2
RewriteRule ^syndicate/audios/(.*)/(.*) /syndicateaudios.php?filter=$1&title=$2
</IfModule>

Atualização 3

[root@smydomain ~]# ls -la /var/www/vhosts/mydoamin.com/httpdocs/cgi-bin/
total 60
drwxr-xr-x  3 apache root     4096 Sep 14 14:37 .
drwxr-x--- 20 som    psaserv  4096 Sep 14 14:40 ..
drwxr-xr-x  2 apache root     4096 Sep  7 03:01 configs
-rwxrwxrwx  1 apache root        4 Sep 14 14:37 index.php
-rwxrwxrwx  1 apache apache   6520 Sep  7 03:01 uu_ini_status_audios.pl
-rwxr-xr-x  1 apache root     3215 Sep  7 03:01 uu_lib_audios.pl
-rwxr-xr-x  1 apache root    30249 Sep  7 03:01 uu_upload_audios.pl
    
por Abs 14.09.2010 / 14:34

3 respostas

3

O SuExec estava causando o problema para mim.

Desativar isso significa que meus scripts no cgi-bin podem ser executados. Mas você deve garantir que o diretório e os scripts tenham as mesmas permissões, ou seja, 0755. Além disso, o diretório e os scripts devem pertencer à mesma pessoa.

Estes foram os requisitos para que meus scripts funcionassem! Espero que isso ajude alguém.

    
por 15.09.2010 / 15:11
1

Na sua postagem, você disse que não foi possível encontrar /var/www/vhosts/mydomain.com/cgi-bin ; o que acontece quando você executa ls -la /var/www/vhosts/mydomain.com/cgi-bin ?

Além disso, notei que não era possível declarar a cgi-bin pasta ; sua regra mod_rewrite está encaminhando todas as solicitações de /var/www/vhosts/mydomain.com/cgi-bin/index.php para /var/www/vhosts/mydomain.com/cgi-bin erroneamente?

Atualize sua pergunta se você souber mais.

EDITAR : Ativar o log de mod_write configurando o seguinte:

RewriteLog /path/to/where/logs/live
RewriteLogLevel 5

Isso deve fornecer dados suficientes para ver se mod_rewrite está afetando sua solicitação.

    
por 14.09.2010 / 14:48
0

Também vi erros em que um URL foi denunciado como 404 para o Firefox. Passar o mesmo URL para wget retornou um 500 Internal Server Error e mostrou erros no arquivo de log. Pode valer a pena uma tentativa com wget para qualquer outra pessoa com esse problema.

No meu caso, foi o resultado de tentar incluir um arquivo em um script PHP de um diretório que não existia.

    
por 06.08.2012 / 20:14