[2024年度版] LD_LIBRARY_PATH を .htaccess で 変更する方法
カテゴリー: レンタルサーバーやcgi
2024-03-03
タイトル
LD_LIBRARY_PATH を .htaccess で 変更する方法
*.so.*がないとかエラーが出る場合は、LD_LIBRARY_PATH設定が正しくないかそのファイル自体がありません。
管理権限を持つ場合
http.confに以下を加える
.htaccessに以下を加える
管理権限がない場合
共有サーバーでは、上記の設定が許可されていないため次の方法で回避できる。
ただし、設定を間違うとセキュリティがあまくなるので注意しよう
方法1:
cgi内で 環境変数LD_LIBRARY_PATHを参照して条件を満たしていなければ LD_LIBRARY_PATHを設定してから外部プログラムとして自身を再び実行する。
perl,php,python,rubyなどプログラムによって書き方がわかるので割愛。
無限ループにならないように、設定済みフラグを環境変数に加えることをお勧めする
簡易版: スクリプトを直接書き換えるもしくは、インクルードする。
方法2:
CGIハンドラーを再設定して、デフォルトのハンドラー cgi-script を上書きする
設定を間違うとセキュリティがあまくなるので注意しよう
こちらは、ファイル1個と.htaccess で完結できるので簡単。
バイナリCGIの場合の設定
[再buildできる場合]
ライブラリパス(絶対パス)を埋め込んで再buildする。
[再buildできない場合]
別のスクリプトを用意して環境変数を設定してから外部プログラムとして実行する
上記参照 (#!/usr/bin/env)
[シンボリックリンクを貼る]
執筆:2024.03.03
編集:2024.03.03
編集:2024.03.03
LD_LIBRARY_PATH を .htaccess で 変更する方法
*.so.*がないとかエラーが出る場合は、LD_LIBRARY_PATH設定が正しくないかそのファイル自体がありません。
管理権限を持つ場合
http.confに以下を加える
AllowOverride FileInfo
# (参考) PassEnv LD_LIBRARY_PATH.htaccessに以下を加える
SetEnv LD_LIBRARY_PATH "/usr/lib:/usr/local/lib:設定したいパスを追加する"
または
SetEnv LD_LIBRARY_PATH "設定したいパス:/usr/lib:/usr/local/lib"
または
SetEnv LD_LIBRARY_PATH "設定したいパス:/usr/lib:/usr/local/lib"
管理権限がない場合
共有サーバーでは、上記の設定が許可されていないため次の方法で回避できる。
ただし、設定を間違うとセキュリティがあまくなるので注意しよう
方法1:
cgi内で 環境変数LD_LIBRARY_PATHを参照して条件を満たしていなければ LD_LIBRARY_PATHを設定してから外部プログラムとして自身を再び実行する。
perl,php,python,rubyなどプログラムによって書き方がわかるので割愛。
無限ループにならないように、設定済みフラグを環境変数に加えることをお勧めする
簡易版: スクリプトを直接書き換えるもしくは、インクルードする。
#!/usr/bin/env -S LD_LIBRARY_PATH=ここにライブラリパス(複数可)を設定する /実行ファイルへのパス
青い部分が追加するところ方法2:
CGIハンドラーを再設定して、デフォルトのハンドラー cgi-script を上書きする
設定を間違うとセキュリティがあまくなるので注意しよう
こちらは、ファイル1個と.htaccess で完結できるので簡単。
バイナリCGIの場合の設定
[再buildできる場合]
ライブラリパス(絶対パス)を埋め込んで再buildする。
[再buildできない場合]
別のスクリプトを用意して環境変数を設定してから外部プログラムとして実行する
上記参照 (#!/usr/bin/env)
[シンボリックリンクを貼る]