質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1516閲覧

Apacheが動かすPHPから、Rubyプログラムをコマンド実行すると、モジュールがrequireできない。

siosenbei

総合スコア22

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/06/11 02:20

表題の組み合わせでプログラムを動かしていますが、
Apache(親はroot、子はcentos)からPHPを起動して、
そのPHPからrubyをコマンドとして実行すると、gemでインストールしたモジュールがrequireできないとなります。
そのrubyプログラムをApacheユーザー(centosユーザー)として直接実行したら、動作します。
また、クローン経由でも、rubyプログラムは動作します。

他に何か見るべき点などがありましたら、ご教示いただけないでしょうか?

■問題(モジュールが読めない。)

[0] => /usr/local/rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- action_mailer (LoadError)

■centos(クローン設定)

#sm start rvm PATH="/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/rvm/bin:/home/centos/.local/bin:/home/centos/bin" GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p551' GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global' MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-1.9.3-p551' IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p551/.irbrc' RUBY_VERSION='ruby-1.9.3-p551' #sm end rvm

■root(クローン設定)

#sm start rvm PATH="/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/root/bin" GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p551' GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global' MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-1.9.3-p551' IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p551/.irbrc' RUBY_VERSION='ruby-1.9.3-p551' #sm end rvm

■sysconfig設定(/etc/httpd/conf/httpd)
※PATH=以降を、rootと同じにしてもNGでした。(下記はcentosに合わせています)

PATH="/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551/bin:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/rvm/bin:/home/centos/.local/bin:/home/centos/bin" export GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p551' export GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global' export MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-1.9.3-p551' export IRBRC='/usr/local/rvm/rubies/ruby-1.9.3-p551/.irbrc' export RUBY_VERSION='ruby-1.9.3-p551'

■apacheの実行ユーザーがCentOS

User centos Group centos ####User apache ####Group apache apacheの親プロセス=root PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17394 root 20 0 499652 18668 10940 S 0.0 1.8 0:01.41 httpd apacheの子プロセス=centos PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17900 centos 20 0 499652 9120 1384 S 0.0 0.9 0:00.00 httpd

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/06/11 03:33

PHP から ruby 実行する場合の環境変数はどうなっているでしょうか? ruby の中で、環境変数を表示するなどの方法で、確認してみてください。
siosenbei

2019/06/11 06:00

Envを見たところ、これらの変数が存在していない状態です。 GEM_HOME IRBRC MY_RUBY_HOME GEM_PATH RUBY_VERSION Apacheを再起動したとき、Apacheのステータスログを見ると 下記の通りいくつかの環境変数が無視されているようです。 (sysconfig設定(/etc/httpd/conf/httpd)) これが原因のようですが、見当つかずです。 systemd[1]: Ignoring invalid environment assignment 'export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551': /etc/s...fig/httpd systemd[1]: Ignoring invalid environment assignment 'export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/loc...fig/httpd
guest

回答2

0

自己解決

ruby側のcommonプログラムにて、各モジュールを読み込む前に環境変数を追加したところ、
動作しました。

ENV["GEM_HOME"] = '/usr/local/rvm/gems/ruby-1.9.3-p551'
ENV["GEM_PATH"] = '/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global'
ENV["MY_RUBY_HOME"] = '/usr/local/rvm/rubies/ruby-1.9.3-p551'
ENV["IRBRC"] = '/usr/local/rvm/rubies/ruby-1.9.3-p551/.irbrc'
ENV["RUBY_VERSION"] = 'ruby-1.9.3-p551'

投稿2019/07/26 02:33

siosenbei

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

apache 起動時に環境変数が設定できていないということなので...

どのように php から ruby を実行しているかわかりませんが、 コマンド実行前に putenv で、必要な環境変数を定義して、実行するとどうなりますか?

<?php (略) putenv("PATH='〜'"); putenv("GEM_HOME='/usr/local/rvm/gems/ruby-1.9.3-p551'"); putenv("GEM_PATH='/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global'"); (中略) system("/path/to/ruby-file.rb"); (略)

PHPマニュアル : putenv

投稿2019/06/11 06:02

編集2019/06/11 06:04
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siosenbei

2019/06/11 07:32

ご回答、ありがとうございます。 ruby側のcommonプログラムにて、各モジュールを読み込む前に環境変数を追加したところ、 動作しました。 ENV["GEM_HOME"] = '/usr/local/rvm/gems/ruby-1.9.3-p551' ENV["GEM_PATH"] = '/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global' ENV["MY_RUBY_HOME"] = '/usr/local/rvm/rubies/ruby-1.9.3-p551' ENV["IRBRC"] = '/usr/local/rvm/rubies/ruby-1.9.3-p551/.irbrc' ENV["RUBY_VERSION"] = 'ruby-1.9.3-p551'
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問