2014-10-05 3 views
2

Я пытаюсь запустить из PHP свой рубиновый скрипт. Когда я запускаю его из командной строки, все в порядке, но когда я запускаю его из кода PHP, я не могу использовать драгоценные камни.запустить рубиновый скрипт из 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' пробегов OK

+0

Итак, когда вы запускаете '/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby server.rb 2> & 1' из командной строки, это работает? – FoolishSeth

+0

скрипт работает, когда я запускаю ruby ​​server.rb –

ответ

0

Выход показывает среды использует Ruby, Version Manager (РВМ). Возможно, ваша среда PHP использует другую версию Ruby и/или Gemset, чем среда вашей командной строки.

Решение обернуть сценарий Ruby, в РВМ обертку, выдавая команду, как в следующем:

РВМ обертка [email protected]_gemet PHP server.rb

Не забудьте указать правильную версию Ruby, (см. список rvm), Gemset (см. список gemset rvm) и путь к server.rb Это создает php_server exectubale в/usr/local/rvm/bin. Оболочка подготавливает запрошенную среду Ruby для вашего скрипта, поэтому, если вы вызываете это из вашего PHP-скрипта, все должно работать должным образом.

Смежные вопросы