404 Ошибка в файле, который существует?
Сценарий отправляет запрос GET на мой URL-адрес примерно так:
http://mydomain.com/cgi-bin/uu_ini_status_audios.pl?tmp_sid=b742be1d131c4d32237a9f1fcdca659e&rnd_id=0.2363453360320319
Тем не менее, я сразу получаю 404:
The requested URL /cgi-bin/uu_ini_status_audios.pl was not found on this server.
Но этот скрипт существует на моем сервере, я могу увидеть файл! У этого есть правильные разрешения (я дал это 777, чтобы быть уверенным). Он также принадлежит моему пользователю apache и входит в группу apache.
Что мне не хватает??
Спасибо за любую помощь в этом!
Обновить
Я думал, что это будет htaccess (переписать), но я не думаю, что это больше. Я попытался поместить туда файл index.php и попытаться получить к нему доступ через мой URL, но я даже не могу этого сделать! Я попробовал это:
http://mydoamin.com/cgi-bin/index.php
- та же ошибка 404! Я получаю это в журнале 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
Файл 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) "
Обновление 2
Мой файл 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>
Обновление 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
3 ответа
SuExec был причиной проблемы для меня.
Отключение этого означает, что мои скрипты в cgi-bin могут работать. Но вы должны убедиться, что каталог и сценарии имеют одинаковые разрешения, т. Е. 0755. Кроме того, каталог и сценарии должны принадлежать одному и тому же лицу.
Это были требования, чтобы мои скрипты работали! Я надеюсь, что это помогает кому-то.
В своем посте вы сказали, что не можете найти /var/www/vhosts/mydomain.com/cgi-bin
; что происходит, когда ты бежишь ls -la /var/www/vhosts/mydomain.com/cgi-bin
?
Кроме того, я заметил, что он сказал, что не может cgi-bin
папка; ваше правило mod_rewrite, пересылающее все запросы от /var/www/vhosts/mydomain.com/cgi-bin/index.php
в /var/www/vhosts/mydomain.com/cgi-bin
ошибочно?
Обновите свой вопрос, если узнаете больше.
РЕДАКТИРОВАТЬ: включить журнал mod_write, установив следующее:
RewriteLog /path/to/where/logs/live
RewriteLogLevel 5
Это должно дать вам достаточно данных, чтобы увидеть, если mod_rewrite
влияет на ваш запрос.
Я также видел ошибки, когда URL-адрес Firefox был указан как 404. Передача того же URL в wget
вернул 500 Внутренняя ошибка сервера и показал ошибки в файле журнала. Может быть стоит попробовать wget
для всех, у кого есть эта проблема.
В моем случае это было результатом попытки включить файл в скрипт PHP из несуществующего каталога.