操作系统:CentOS 7 / Apache:2.4
我正在升级机器和软件,其中一部分涉及从Apache 2.2.x升级到Apache 2.4.x. 它的很好的一部分工作正常,包括PHP脚本和纯HTML文件,但我有很大的问题,试图让Perl CGI脚本运行。
暂时,在排除故障时,我已经禁用了Selinux的httpd,(作为宽容:即。semanage permissive -a httpd_t),所以我知道这不是问题。
我已经尝试了很多东西,但底线是我不能从/ cgi-bin /运行任何东西。 这个特定的站点,由于遗留的原因,不在/ var / www /下,但在/ home / www / htdocs /下,但是我认为这只是Selinux的一个问题,目前它被禁用。
所以,我在Apache错误日志中得到的错误消息的例子如下:
AH01215: Can't open perl script "/home/www/htdocs/zac/cgi-bin/test.cgi": Permission denied
我尝试了不同的东西,但是我现在有一个“apache”作为/ cgi-bin /的组拥有者,拥有777的权限,以及作为所有者和组的脚本的apache,权限为777.脚本非常简单, (只是打印一些文本来testing),我已经删除并重新添加每个脚本(即#!/ usr / bin / perl)中的第一行,以确保没有任何可笑的字符。
我知道在2.4的conf文件中的一些语法是不同的,但我认为我有一切可以,请看下面:
<VirtualHost *> DocumentRoot "/home/www/htdocs/zac/" ServerName www.zacserver.pc ServerAlias zacserver ScriptAlias /cgi-bin/ "/home/www/htdocs/zac/cgi-bin/" AddHandler cgi-script .cgi .pl AddType application/x-httpd-php .html .php <Directory "/home/www/htdocs/zac/"> AllowOverride all Options ExecCGI Includes Require all denied Require ip 172.10 127.0.0.1 </Directory> CustomLog "/var/www/sites/logs/zac_access.log" combined ErrorLog "/var/www/sites/logs/zac_error.log" </VirtualHost>
奇怪的是,如果我把cgi-bin目录上面的test.cgi脚本放到/ zac /中,那么它工作正常。 我甚至有另一个目录,cgi-test,拥有和cgi-bin相同的所有权和权限,具有相同的脚本和权限,并且在那里也可以正常工作。 但似乎没有任何工作从/ cgi-bin本身。
ScriptAlias行,在上面的conf文件中,我也尝试删除引号,并重新启动,但没有效果。 (不是我期望的)。
所以,我有点苦于find其他东西,我可以看看,因为权限看起来不错,脚本是好的,而据我所知,confconfiguration也很好。 驾驶我疯狂!
任何援助将不胜感激。 我有一种感觉,这一定很简单,但解决办法是逃避我。
更新:我后来通过使用restorecon将文件上下文从httpd_sys_script_exec_t更改为httpd_sys_content_t来获得此工作。 不知道为什么这应该工作,因为我想这应该是相反的方式。
我后来通过使用restorecon将文件上下文从httpd_sys_script_exec_t更改为httpd_sys_content_t来实现这一目标。 不知道为什么这应该工作,因为我想这应该是相反的方式。
你不能拥有广泛的权限,Apache认为这是一个安全风险! 试试755。