Perl CGI脚本因
失败Can't locate /home/testdir/first.pl: /home/testdir/first.pl:
Permission denied at /var/www/cgi-bin/first.cgi line 2.
和
End of script output before headers: first.cgi in /etc/httpd/logs/error_log
这是具有Apache 2.4的rhel8系统
我尝试将first.pl
移动到不同的位置,并修改first.cgi
使其指向first.pl
。
如果我将first.cgi
放置在first.pl
中,而不是/var/www
,/home/testdir
或其他目录中,则/var
执行
在httpd.conf
中,我将/home/testdir/
的权限设置为与/var/www
相同,如下所示,然后重新启动apache
<Directory "/home/testdir">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
出于无奈,我然后将/var/www
的权限更改为Require all denied
并重新启动了apache。当我将first.cgi
指向first.pl
并将权限更改为/var/www
时,它仍然成功运行了Require all denied
。
在将suexec
指向first.cgi
时,我也禁用了/home/testdir
并收到了相同的错误
first.pl
和/home/testdir
中/var/www
的权限为755,用户和组均为root。
home
,testdir
,var
和www
的权限均为755,用户和组均为root用户
first.cgi :
#!/usr/bin/perl
require '/home/testdir/first.pl';
test();
first.pl :
#!/usr/bin/perl
sub test{
print "Content-type: text/html\n\n";
print "Hello, World.";
}
first;
该脚本应显示“ Hello,World”。在网页上。而是显示:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
答案 0 :(得分:1)
戴夫·米切尔(Dave Mitchell)的评论正确。在命令行中输入sudo setenforce permissive后,脚本将按预期运行。