【发布时间】:2014-03-26 04:08:47
【问题描述】:
我很难使用 Apache 和 RVM 设置 Ruby CGI。我可以很好地执行需要核心 gem 的脚本,但我不能需要非核心 gem,并且 apache 会生成错误。例如:
#!/usr/bin/env /home/user/.rvm/rubies/ruby-2.1.0/bin/ruby
require 'cgi'
print "Content-type: text/html\n\n"
print 'hello there'
#!/usr/bin/env /home/user/.rvm/rubies/ruby-2.1.0/bin/ruby
require 'cgi'
require 'nokogiri'
print "Content-type: text/html\n\n"
print 'hello there'
这两个脚本都可以在终端上正常运行,但是 apache 在第二个脚本上抛出了这个错误:
[2014 年 3 月 25 日星期二 20:53:13] [错误] [客户端 127.0.0.1] 脚本头过早结束:main_index.rb
/home/aaachilles/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- nokogiri (LoadError)from /home/aaachilless/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire'来自/home/aaachilless/Dropbox/ aaachiless-me/cgi/main_index.rb:4:in `'
看起来像这个人How do I get a Ruby CGI program that requires a gem to run properly? 遇到了同样的问题,但要求 rubygems 并不能解决我的问题。
感谢任何帮助!
【问题讨论】:
-
jimworm 的回答并没有真正帮助。 apache可以执行一些脚本,所以必须加载RVM,对吧?我什至没有安装系统红宝石。
-
我将尝试使用 suexec 运行 CGI,如果这不起作用,我将尝试卸载 RVM,安装系统 ruby,并在使用系统 ruby 时运行 CGI,如果那样的话不起作用我将尝试将 RVM 安装为系统安装,如果不起作用,我将放弃成为 Web 开发人员的所有希望和梦想。
-
更新:当我的脚本从终端运行时,使用 rvm 切换 rubies 会影响我的脚本,但当它们由 apache 执行时则不会。 apache 和我一样运行。
-
我真的不想在系统范围内安装 rvm,但我想我会尝试一下,看看会发生什么。