5

~/opt/lib ディレクトリにあるコンパイル済みライブラリを表示するために、Dreamhost の Passenger で Rails アプリを取得するのに問題があります。root アクセス権がないため、ここに配置する必要があります。

./script/console でアプリを起動すると、.bash_profile のLD_LIBRARY_PATH環境変数を更新して ~/opt/lib を含めるように更新したため、ライブラリが問題なく表示されます。

environment.rb ファイルを入れてみましENV['LD_LIBRARY_PATH'] = '~/opt/lib'たが、あまり役に立ちません。自分のサイトに移動すると、Passenger から次のエラーが表示されます: libodbcinst.so.1: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません - /home/username/opt/lib/odbc.so

誰でもこれを経験したことがありますか?

ありがとう

4

4 に答える 4

2

http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/で説明した Passenger と同様の問題がありました。

ただし、あなたの場合、Dreamhost の httpd.conf ファイルを変更できないため、これは機能しない可能性があります。

他に試すことができるのは、LD_LIBRARY_PATH を .bashrc に設定することです - http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/によるとこれは、Dreamhost の場合に機能しました。Ruby を起動する前に Passenger が .bashrc を実行することを確認していません。

于 2008-10-31T09:11:59.257 に答える
1

.bashrcPassenger が使用するライブラリ パスは、起動時に Apache がロードするものであるため、使用は機能しません。ユーザーのディレクトリを調べる方法はありません。これは、セキュリティ上の大きな問題となるからです。

于 2009-01-08T10:05:29.203 に答える
0

これは古いスレッドですが、完全を期すために、目標を達成する方法は次のとおりです。

  1. 可能であれば LD_LIBRARY_PATH を設定しないでください - それは恐ろしいことです。
  2. Apache ユーザーの環境を制御できないため、上記の方法で LD_LIBRARY_PATH 環境変数を設定しようとしても機能しません。
  3. ライブラリ ファイルをコンパイルして正しい検索パスを設定する前に、リンクおよびレコード パス フラグを設定して LDFLAGS 環境変数を設定します。例:

    export LDFLAGS="-L$HOME/opt/lib -R$HOME/opt/lib"

コンパイルされると、ファイルには関連するライブラリへの正しいリンクが設定されます。これは、ldd コマンド ライン ツールを使用して確認できます。例:

ldd /$HOME/your/custom/complied/library/file.so
于 2011-10-16T06:42:41.147 に答える
0

environment.rb の方法は適切な方法のように思えますが、LD_LIBRARY_PATH代わりに追加することもできます。また、念のため、そのディレクトリへのフルパスを使用するようにしてください。

または、@ http://wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI.htaccessで説明されているように、ディレクティブを使用できる場合があります。

于 2009-01-10T20:54:22.707 に答える