运行ruby脚本时出错并使用来自远程服务器的php的ssh2使用gems

时间:2015-02-19 06:28:14

标签: php ruby phpseclib ssh2-exec

我有一个服务器,ruby和基本宝石设置如mysql2,安装了capistrano,我试图使用SSH2从远程服务器(PHP服务器)触发我的ruby脚本。我的脚本在ruby服务器上运行正常,但是当我使用ssh2从远程服务器尝试相同时,我无法运行该ruby脚本。

为了进行测试,我编写了一个简单的脚本,它只是打印一个语句,当我必须传递安装ruby的绝对路径时它就可以工作。

但是现在我为我的ruby脚本安装的每个gem获取路径非常繁琐。以下是错误

"/home/user/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sshkit (LoadError)



"/home/user/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- mysql2 (LoadError)

下面是我试图在我的php服务器上执行的脚本

$ssh = new Net_SSH2('ip');
if (!$ssh->login('user', 'password')) {
    exit('Login Failed');
}


echo '<pre>';
print_r($ssh->exec('/home/user/.rvm/rubies/ruby-2.2.0/bin/ruby /home/user/deployment/crm/crm.rb'));
echo '</pre>';

如果我尝试在没有红宝石路径的情况下运行此操作

bash ruby command not found

任何建议如何从远程服务器简单地执行我的ruby脚本。

1 个答案:

答案 0 :(得分:0)

这听起来像是无法正确设置RVM而不是其他任何东西。

检查此答案:https://superuser.com/questions/413683/how-to-get-ruby-when-called-from-a-shell-script-to-see-rvm-default-ruby

从那里改编:

# Assumes that 2.2.0 is already fully-installed under RVM.
rvm --default use ruby-2.2.0

这需要为您登录的用户运行。您可能希望阅读并理解该答案,以确保获得所需。

将宝石安装到默认的红宝石可能要简单得多......