2014-10-05 2 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>' 

의 응답을하지만, OK 'rubygems' 실행을 필요로

+0

그래서 명령 행에서'/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby server.rb 2> & 1'을 실행하면 작동합니까? – FoolishSeth

+0

ruby ​​server.rb를 실행할 때 스크립트가 작동합니다. –

답변

0

는 출력은 루비 버전 관리자를 (사용 환경을 보여줍니다 rvm). 귀하의 PHP 환경은 아마도 귀하의 명령 줄 환경과 다른 Ruby 버전 및/또는 Gemset을 사용하고있을 것입니다.

하는 것은 올바른 루비 버전을 지정해야합니다

RVM 래퍼 [email protected]_gemet PHP는 server.rb]로 :

이 솔루션은 다음과 같이 명령을 실행하여 RVM 래퍼에 루비 스크립트를 래핑하는 것입니다 (rvm list 참조), Gemset (rvm gemset list 참조) 및 server.rb의 경로 이렇게하면/usr/local/rvm/bin에 php_server exectubale이 작성됩니다. 래퍼는 스크립트에 대해 요청 된 Ruby 환경을 준비합니다. 따라서 PHP 스크립트에서이를 호출하면 모든 것이 예상대로 작동합니다.

관련 문제