我在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
答案 0 :(得分:0)
检查是否可以直接在shell上执行脚本,如下所示:
$ ./script.cgi
你的shebang可能包含尾随\ r \ n,一个常见的技巧是用#!/ usr / bin / perl -w替换#!/ usr / bin / perl
答案 1 :(得分:-1)
更新:经过进一步的故障排除后,我认为问题是浏览器缓存(叹息!)强制重新加载(Mac上的Cmd-Shift-R)后,它们都按需执行。
这解释了为什么有些脚本执行了,有些脚本没有执行,即使它们都具有相同的权限并且位于同一目录中。
我相信第一次正确执行的脚本是我在配置正确时测试的脚本;那些简单列出其来源的是我首先测试的那些。
对于记录,上面的设置现在正常工作。
永远记住:如果您的浏览器没有显示您的期望,请重新加载。