在xampp中访问禁止403错误
我对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
然后我在我的mozilla浏览器中的http://localhost/cgi-bin/sample.pl
的帮助下在localhost中运行了我的sample.pl
。 我刚看到以下窗口。
我只找到了与“新安全概念错误”和“访问虚拟主机问题”相关的答案。
我确实遇到了一个askubuntu查询 ,一个类似于我的查询 。 它没有答案,只有一些评论。 一条评论建议更改文件权限。 它指示从这里获得帮助。
它说将目录权限更改为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" Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
正如我在您的问题中所看到的,您使用的是Apache 2.4.7 ,但您的httpd.conf使用的是Apache 2.2指令。
根据Apache 2.4手册:
访问控制
在2.2中,使用指令Order,Allow,Deny和Satisfy完成了基于客户端主机名,IP地址和客户端请求的其他特征的访问控制。
在2.4中,使用新模块mod_authz_host以与其他授权检查相同的方式完成此类访问控制。 旧的访问控制习惯用法应该由新的身份validation机制替换,但为了与旧配置兼容,提供了新模块mod_access_compat。
试试这个改变:
Options Indexes FollowSymLinks AllowOverride All Require all granted
允许和拒绝指令控制哪些主机可以访问或不可以访问服务器区域, 需要测试是否根据特定授权提供程序和指定的限制对已通过身份validation的用户进行授权。 要求所有授予的方法无条件允许访问,请参阅Beyond just authorization
读取配置文件后更新 :
您的默认配置文件是正确的。 perl脚本中的问题是错误的shebang。
试试这个:
#!/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
并刷新浏览器。
$ cd /opt/lampp $ sudo chmod 777 -R htdocs
并编辑httpd.conf
(使用sudoedit /opt/lampp/etc/httpd.conf
)并更改:
AllowOverride none Require all denied
至:
Options Indexes FollowSymLinks AllowOverride All Require all granted