用PHP运行PHP中的ruby脚本

时间:2014-10-05 16:11:59

标签: php ruby pivotaltracker

我尝试从PHP运行我的ruby脚本。当我从命令行运行它时它没问题但是当我从PHP代码运行它时我不能使用宝石。

这是我的PHP脚本

$rubyBin = '/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby';
echo (shell_exec("$rubyBin server.rb 2>&1"));

这是来自服务器的响应

file exists/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- pivotal-tracker (LoadError)
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from server.rb:5:in `<main>'

但要求'rubygems'运行正常

1 个答案:

答案 0 :(得分:0)

输出显示您的环境正在使用Ruby Version Manager(rvm)。您的PHP环境可能使用与命令行环境不同的Ruby版本和/或Gemset。

解决方案是通过发出如下命令将您的Ruby脚本包装在RVM包装器中:

rvm wrapper 2.1.1@commandline_gemet php server.rb

确保指定正确的Ruby版本(请参阅rvm列表),Gemset(请参阅rvm gemset list)和server.rb的路径。这将在/ usr / local / rvm / bin中创建一个php_server exectubale。包装器为您的脚本准备请求的Ruby环境,因此如果您从PHP脚本调用它,一切都应该按预期工作。