Apache 2.4只执行一些CGI脚本

时间:2017-05-09 23:03:22

标签: browser

我在VirtualBox VM中使用Ubuntu 14.04.5上的Apache 2.4.7。事情几乎工作......

我的一些cgi脚本运行/执行,但其他脚本只显示脚本的源代码。 access.log或error.log文件中没有错误或有趣的条目。

  

更新经过进一步的故障排除后,我认为问题是浏览器缓存(叹息!)强行重装后(Mac上的Cmd-Shift-R),   它们都按照需要执行。 (我相信正确执行的脚本   第一次是我在配置时测试的那些   正确;那些简单列出其来源的是我先测试的那些。)

     

为了记录,下面的设置现在正常工作。

所有脚本都以.cgi结尾,所有脚本都调用#!/usr/bin/perl作为第一行,所有脚本都具有相同的权限(使用+ x)。我附加了“cgi”目录的ls和站点的配置文件。

我错过了哪些会导致某些文件执行,而其他文件会列出?非常感谢!

CGI目录,具有权限:

wnr@wnr-VirtualBox:/usr/local/webview/www/flow$ ls -al *.cgi
-rwxr-xr-x 1 wnr wnr 89720 Aug  9  2013 adhoc.cgi
-rwxr-xr-x 1 wnr wnr 10535 Apr  2  2013 adhocClick.cgi
-rwxr-xr-x 1 wnr wnr  6155 Mar 19  2012 adhocIf.cgi
-rwxr-xr-x 1 wnr wnr   929 Feb 25  2013 configdump.cgi
-rwxr-xr-x 1 wnr wnr 13325 Apr  8  2013 exporter.cgi
-rwxr-xr-x 1 wnr wnr  6624 Mar 19  2012 flow-collector-stats.cgi
-rwxr-xr-x 1 wnr wnr  2716 May  9 12:28 getFilter.cgi
-rwxr-xr-x 1 wnr wnr   124 May  9 12:48 hirich.cgi
-rwxr-xr-x 1 wnr wnr 88514 May  9 12:27 render.cgi
-rwxr-xr-x 1 wnr wnr  8242 Apr  1  2013 weblog.cgi

注意:weblog.cgi和hirich.cgi都按预期执行,其他人只列出源代码......

这是网站的配置文件:

wnr@wnr-VirtualBox:/usr/local/webview/www/flow$ cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

Alias "/webview" "/usr/local/webview/www"

<Directory "/usr/local/webview/www" >
#     Options Indexes Includes FollowSymLinks ExecCGI
     Options Indexes Includes FollowSymLinks ExecCGI
     Require all granted
     AllowOverride All
     SetEnv no-gzip 1
     AddHandler cgi-script .cgi
</Directory>

# <Directory "/usr/local/webview/www/flow" >
#     Options +FollowSymLinks +ExecCGI
#     AddHandler cgi-script .cgi
# </Directory>

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

2 个答案:

答案 0 :(得分:0)

检查是否可以直接在shell上执行脚本,如下所示:

$ ./script.cgi

你的shebang可能包含尾随\ r \ n,一个常见的技巧是用#!/ usr / bin / perl -w替换#!/ usr / bin / perl

答案 1 :(得分:-1)

更新:经过进一步的故障排除后,我认为问题是浏览器缓存(叹息!)强制重新加载(Mac上的Cmd-Shift-R)后,它们都按需执行。

这解释了为什么有些脚本执行了,有些脚本没有执行,即使它们都具有相同的权限并且位于同一目录中。

我相信第一次正确执行的脚本是我在配置正确时测试的脚本;那些简单列出其来源的是我首先测试的那些。

对于记录,上面的设置现在正常工作。

永远记住:如果您的浏览器没有显示您的期望,请重新加载。