Я пытаюсь запустить из 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'
работает нормально
Вывод показывает, что ваша среда использует Ruby Version Manager (rvm). Ваша среда PHP, вероятно, использует другую версию Ruby и / или Gemset, чем ваша среда командной строки.
Решение состоит в том, чтобы обернуть ваш скрипт Ruby в оболочку RVM, выполнив команду, подобную следующей:
Оболочка rvm 2.1.1@commandline_gemet php server.rb
Обязательно укажите правильную версию Ruby (см. Список rvm), Gemset (см. Список rvm gemset) и путь к server.rb. Это создает exectubale php_server в / usr / local / rvm / bin. Оболочка подготавливает запрошенную среду Ruby для вашего скрипта, поэтому, если вы вызываете это из своего PHP-скрипта, все должно работать как положено.
Других решений пока нет …