【发布时间】:2013-05-22 17:30:10
【问题描述】:
我正在研究如何使用 ruby 在我的网络服务器上编写 CGI 应用程序。使用 CGI 库,我准备了以下代码:
#!usr/bin/ruby
require 'cgi'
#print "Content-type: text/html\r\n\r\n" << Not needed with cgi.out?
cgi = CGI.new('html3')
cgi.out do
cgi.html do
cgi.head do
"\n" + cgi.title {"This is a test"}
end
+ cgi.body do "\n" +
cgi.form do "\n" +
cgi.hr +
cgi.h1 { "A form: " } + "\n" +
cgi.textarea("get_text") + "\n" +
cgi.br +
cgi.submit
end
end
end
end
我使用的是 Kubuntu 13.04,使用的是 apache2 网络服务器,文件在 /usr/lib/cgi-bin 目录下,chmod 如下:
richard@Senjai:~/projects/pickaxe/mini-projects/cgi-bin$ ls -l /usr/lib/cgi-bin/
total 12
-rwxr-xr-x 1 richard richard 170 May 27 13:30 cgi_escape.rb
-rwxr-xr-x 1 richard richard 395 May 27 13:30 cgi_htmlgen.rb
-rwxr-xr-x 1 richard richard 126 May 27 13:30 cgi_test.rb
我认为权限不是问题,因为 cgi_test.rb 和 cgi_escape.rb 工作正常 美好的。
有没有人知道为什么会出现 500 内部服务器错误?请注意,这只是一个离线 Web 开发环境,因此如果有人对此感兴趣,我无法提供该页面的链接。
Apache2 错误日志:
richard@Senjai:/var/log/apache2$ cat error.log
[Mon May 27 14:06:57 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.4.6-1ubuntu1.2 configured -- resuming normal operations
[Mon May 27 14:07:04 2013] [error] [client 127.0.0.1] (2)No such file or directory: exec of '/usr/lib/cgi-bin/cgi_htmlgen.rb' failed
[Mon May 27 14:07:04 2013] [error] [client 127.0.0.1] Premature end of script headers: cgi_htmlgen.rb
[Mon May 27 14:07:04 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
【问题讨论】:
-
你有错误日志吗?
-
添加了error.log。每次我刷新页面时都会显示这三行。
-
如果我运行其中一个有效的脚本。像 cgi_escape.rb 一样,我得到的唯一消息是 Favicon 消息(这真的没关系。)虽然这些不使用 CGI 库进行输出,但只有一系列打印语句。
-
如果包含 Content-Type 标头会发生什么?
-
我取消了它的注释,但出现了同样的错误。从错误消息的描述来看,我似乎需要关闭一些东西......我是根据 Pickaxe book 1.9 中的一个示例创建的。 (Programming ruby 1.9)但即使直接复制和粘贴书中的代码也行不通。
标签: ruby-on-rails ruby apache cgi