Доступ запрещен 403 ошибка в xampp
Я очень новичок в xampp. Я сделал новую установку xampp с помощью следующих команд.
sudo su
cd /tmp
wget bit.ly/1cmyrUo -O xampp-32bit.run
chmod 777 ./xampp-32bit.run
sudo ./xampp-32bit.run
Затем я создал файл perl, чтобы проверить, работает ли мой xampp. Следующее мое sample.pl
содержимое файла.
#!usr/bin/perl
print "content-type:text/html\n";
print(header());
use CGI qw(:standard);
print(start_html());
print "Hello. I am ram";
print(end_html());
После копирования моего файла Perl из /home/vicky/desktop
в /opt/lampp/cgi-bin
,
Я запустил свой xampp с помощью следующей команды.
/opt/lampp/lampp start
Тогда я побежал мой sample.pl
в localhost с помощью http://localhost/cgi-bin/sample.pl
в моем браузере Mozilla. Я только что получил следующее окно.
Я нашел только ответы, относящиеся к "новой ошибке концепции безопасности" и "проблеме с доступом к виртуальному хосту".
Я наткнулся на запрос аскубунту, ставку, аналогичную моей. У него не было ответов, но были некоторые комментарии. Один комментарий предложил изменить права доступа к файлу. Это направлено, чтобы получить помощь отсюда.
Он сказал, чтобы изменить разрешение каталога на 755 и разрешение файла на 644, чтобы решить этот вид проблемы. Когда я попытался это сделать, я узнал, что мой каталог cgi-bin уже имеет разрешение 755, и мой sample.pl
было 644 разрешения. У меня сейчас нет решений.
PostScript: я приложил содержимое моего файла /opt/lampp/apache2/conf/httpd.conf. Надеюсь, что это поможет поставщикам ответов полностью понять мою проблему.
Alias /bitnami/ "/opt/lampp/apache2/htdocs/"
Alias /bitnami "/opt/lampp/apache2/htdocs"
<Directory "/opt/lampp/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
4 ответа
Как я вижу из вашего вопроса, вы используете Apache 2.4.7, но ваш httpd.conf использует директиву Apache 2.2.
Согласно инструкции Apache 2.4:
Контроль доступа
В 2.2 управление доступом на основе имени хоста клиента, IP-адреса и других характеристик клиентских запросов осуществлялось с использованием директив Order, Allow, Deny и Satisfy.
В версии 2.4 такое управление доступом осуществляется так же, как и другие проверки авторизации, с использованием нового модуля mod_authz_host. Старые идиомы управления доступом должны быть заменены новыми механизмами аутентификации, хотя для совместимости со старыми конфигурациями предусмотрен новый модуль mod_access_compat.
Попробуйте это изменения:
<Directory "/opt/lampp/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Разрешить и запретить директиву контролирует, какие хосты могут или не могут получить доступ к области сервера, Require проверяет, авторизован ли аутентифицированный пользователь согласно определенному поставщику авторизации и указанным ограничениям. Требовать все предоставленные средства означает, что доступ разрешен безоговорочно, давайте посмотрим, кроме просто авторизации
Обновление после прочтения файла конфигурации:
Ваш файл конфигурации по умолчанию правильный. Проблема в неправильном шебанге в скрипте Perl.
Попробуй это:
#!/usr/bin/perl
Также:
chmod +x /opt/lampp/cgi-bin/yourScript.pl
Вот полезная ссылка о проблеме разрешения файла
Второе обновление
Изменить заголовок содержимого http:
print "Content-type:text/html\n";
Этот заголовок прочитан apache.
У тебя apache работает как daemon
Пользователь, проверьте, доступны ли для чтения все каталоги в пути к скрипту.
Попробуйте сменить владельца и группу для файлов на apache,
В Ubuntu пользователь apache - www-data, в терминале:
$ sudo chown -R www-data:www-data PUBLICFOLDER
И обновите браузер.
Чтобы решить эту проблему, вы должны обновить xampp до последней версии.
И снова запустите apache, он будет работать правильно.
$ cd /opt/lampp
$ sudo chmod 777 -R htdocs
И редактировать httpd.conf
(с чем-то вроде sudoedit /opt/lampp/etc/httpd.conf
) и изменить:
<Directory />
AllowOverride none
Require all denied
</Directory>
Для того, чтобы:
<Directory "/opt/lampp/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>