この年末年始はリリース案件もあり何だかんだで結構コーディングしてました。そんな中ハマったことを備忘録的にいくつか書いておきます。
とあるプログラムをバックグラウンドでWeb経由で実行して出力結果を取得するという、わりと事務処理系ではありがちなロジックを組んでいたのですが、そのプログラムがコンソールから使うことが前提になっている仕様で必要なファイル群を読み込むための環境変数をローカルで設定しなければ動かない仕様でした。
Web経由ということはWebサーバ(HTTPD)が実行することになるのですが、nologinな仕様だったため、環境変数をどう渡そうか半日強悩みました。
以前同じようなロジックを組んだ時は環境変数の類は引数指定できたことやCGI経由で実行したこともあり、わりかしハマらずにできたのですが、諸々の理由で今回はWebサーバ経由で直接実行する必要があったため、シェルスクリプトを別途用意してsystem関数でキックしてもうまく取得できませんでした。
かといってsuEXECとかsuPHPは、リビルドが入るのと、1機能のためにシステム全体に影響するので最終手段と考えていました。
ググっては試し、ググっては試し〜の繰り返しで、ようやくこのページに辿り着き無事解決しました。
HTTPDのユーザに環境変数を設定するには起動スクリプト中(/etc/init.d/httpdなど)にexportを記述してあげればOKのようですね。
ちなみにこのサイトの方は2日間ハマったようですが、私は彼のおかげで半日ですみました。とても感謝ですが、こういったハマる時間ってそれはそれで経験としては大事なんだとは思いつつも、迫りくる納期との戦いに勝たねばならないときはなるべく回避したいのも事実ですよね。
ちなみにExt JSなどのJavaScriptライブラリでIEだけどうしても動かなくなった時は、コンフィグオプションやJSONデータの最後のカンマをまず疑いましょう。
たったカンマ一つに1時間以上悩まされました。(><)
コード量が多くなるとなかなか見つけにくいんですよね。そいえばフロリダトレーニングのときに講師が
//modal:true,
こうしてコメントしてしまうと最後の記述だった時にハマりますが、
//,modal:true
こうして書けばどこでコメントしても大丈夫というようなTIPSを実践してたっけ。。。
私の備忘録でハマる時間が半日から30分になる人が出てくれると幸いです。
追記:
そうそう、IEといえば・・・
IEって2つのウィンドウを、(ファイルから新規ウィンドウや新しいタブではなく)「単独」で立ち上げるとBasic認証を使ってても別のセッションとして認識してくれるのを今の今頃初めて知ったのですが、これって大昔からそうだったのかな・・・?!
ブラウザを複数枚立ち上げなくてもBasic認証を使ったシステムの検証がIEのみで可能になるのでこれはこれで便利なのですが、でもcookieは共有されるのでBasic認証で取得した権限などをcookieで制御しようとすると整合性が取れなくなる論理バグが生まれるので注意が必要ですね。
doodle開発記 石丸健太郎
子供の転地療養のため住み慣れた東京を離れ湖と山に囲まれた諏訪の地にて21世紀的なワークライフバランスのあり方を模索中。GPSケータイとGoogleMapsを連携させたマッシュアップサイト「doodle」を中心に、関連サービスの開発日記を綴ります。
2009年01月06日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/112237016
この記事へのトラックバック
http://blog.seesaa.jp/tb/112237016
この記事へのトラックバック









