2010年 6月 30

Perl の $ENV{PATH} は何処を参照しているのか?

例えば bayon を perl から使うのに Text::Bayon モジュールを利用したら
sh: bayon: command not found
と言うエラーログが残る。

コマンドが見つからない = パスが通っていない、と言う事なんだろうけど、apache を2.2 にしたらパスが変わったのか apache2.0 の時に使えた Lingua::JA::Summarize を使用するスクリプトも

sh: mecab: command not found

となる。

mecab も bayon も /usr/local/bin にインストールしてあるのだけれど、$ENV{PATH} を調べてみると、
$ENV{PATH} = /sbin:/usr/sbin:/bin:/usr/bin
となっており、/usr/local/bin にはパスが通っていない。

この 環境変数はどこを参照しているのかまさに以下のページのような迷い方をした。

apacheの起動ユーザーにPATH通しときゃいいのか?とか、httpd.confにそういう設定が?とか、もしかしてPHP.iniにそんな設定が?とか思ってたんですが、全部ハズレ。

Apache2の環境変数PATHを設定する – masahilog

SetEnvやPassEnvディレクティブを追加してみたり、. bash_profile を変更したり、散々いろいろ試してみたけど、上記ページのおかげでヒントが得られたのでメモ。

CentOS系(というかRedhat系、だろうか)は/etc/sysconfig/httpdがそれに該当するような。探しても調べてもenvvarsの影も形も無かったけど、/etc/init.d/httpdの冒頭箇所で/etc/sysconfig/httpdがあったらそれを評価してからhttpdが起動するようになってる。なんでこんな仕様なんだろうか。

追記でこのように書かれていたのだけれど、/etc/rc.d/init.d/httpd を見てみると、 /etc/sysconfig/httpd のみではなく、 /etc/rc.d/init.d/functions も参照している。

/etc/rc.d/init.d/functions を見ると、ビンゴでした。

# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH

ここのパスを変更して、保存。

注意点としては、apache を再起動ではなく 停止してから起動する事。
再起動では反映されませんでした。

ちなみに CentOS (4.x 5.x) での話ですので他のディストリビューションでは違うかもしれません。

More from my site

  • centOS4.8 apache2.0.x を apache 2.2.15 へ yum でアップデートcentOS4.8 apache2.0.x を apache 2.2.15 へ yum でアップデート utterramblings レポジトリを使い apache を2.2.15 へ yum でアップデートする。 phpも5.2.13 へアップデートされる。 remiレポジトリでもいいけど PHPが5.3になってしまうので。 utterramblingsレポジトリ追加 # rpm --import […]
  • Apache2.2にmod_SpeedyCGIを組込むにはパッチが必要Apache2.2にmod_SpeedyCGIを組込むにはパッチが必要 Apache2.2でSpeedyCGIのperlモジュールを使うのならyumなりで一発インストールできるけど、mod_SpeedyCGIをインストールしようとするとmakeでコケる。 どうやらパッチを当ててからmakeする必要があるようだ。 参考:Apache2.2にmod_SpeedyCGIを組み込む方法(パッチファイルのあて方) / レンタルサーバー […]
  • Apacheの設定ファイル(httpd.conf)の文法をチェックするコマンドApacheの設定ファイル(httpd.conf)の文法をチェックするコマンド Apacheの設定ファイルが正しいかhttpdを起動する前に確認する /usr/sbin/apachectl configtest 設定ファイル(httpd.conf)に文法エラーが無ければ Syntax OK と表示されるはず。 何らかのエラーがある場合は Syntax error on line 31 of […]
  • ApacheでCGIの負荷検証(ベンチマークテスト)ApacheでCGIの負荷検証(ベンチマークテスト) Apacheには、標準で「ab」(Apache Bench)というツールが付属している。abの構文は、 ab [options] […]
  • CentOS 5.3 へPHP5.30をyumでインストールCentOS 5.3 へPHP5.30をyumでインストール phpmyadmin3.2xxでphp5.2以上が必要なのでインストール。CentOS5.3のデフォルトだとphp5.16がインストールされる。 こちらの手順にてhttp://centoshome.seesaa.net/article/117329591.html 確認 # php -vPHP 5.3.0 (cli) (built: Jul 19 2009 […]
  • Apacheでの文字化け対策Apacheでの文字化け対策 htmlをeucやutf-8等の文字コードで作成する必要がある時(cgiで作成するなど)の場合、ブラウザが文字コードを読めない場合がある。 httpd.confに以下の記述があると.htmlのファイルには自動でヘッダが送られてしまう。 AddType "text/html; charset=Shift_JIS" .html #AddType […]

Filed under: Apache,CentOS4.x,CentOS5.x,perl

Trackback Uri


Trackbacks/Pingbacks



コメントする