我正在从 PHP 调用一个 Ruby 脚本system('ruby show.rb filename')
。
show.rb 看起来像这样:
require 'erubis'
f = ARGV[0]
puts f
input = File.read(f)
eruby = Erubis::Eruby.new(input)
puts eruby.result(binding())
在控制台中执行命令ruby show.rb filename
时,所有内容都会打印出来,但是从 PHP 调用它时,它只打印文件名,但不会渲染模板。为了查看错误,我在 PHP 调用中通过管道传输了 stderr -> stdout,我得到了这个
/Library/Ruby/Gems/2.3.0/gems/erubis-2.7.0/lib/erubis/converter.rb:132:in 'scan': invalid byte sequence in US-ASCII (ArgumentError) from /Library/Ruby/Gems/2.3.0/gems/erubis-2.7.0/lib/erubis/converter.rb:132:in 'convert_input' from /Library/Ruby/Gems/2.3.0/gems/erubis-2.7.0/lib/erubis/converter.rb:36:in 'convert' from /Library/Ruby/Gems/2.3.0/gems/erubis-2.7.0/lib/erubis/engine.rb:30:in 'initialize' from show.rb:5:in 'new' from show.rb:5:in temp/Newsletter.rb'
我是红宝石的新手。是否有任何选项参数可以解决此问题?PHP在那里做了什么不同的事情,可能会发生错误?