うーん、できなかった。
せっかくplenvで別バージョンのPerlを入れても、ApacheのCGIで実行しているPerlは systemのPerlを使う。
いろいろ調べて、Apacheの環境変数のPATHを変えれば、plenvが指し示すPerlを読みに行くんじゃないかということになった。
どうやって変えるか調べていて、最初はenvvarsというファイルがあって、そこを書き変えればいいのかと思ったが、自分のMacにはenvvarsというファイルがない。Macのデフォルトapacheだとそのファイルで設定するのではないらしい。
Macはplistにその設定が書いてあるらしい。
でも、plistをいじるのやだなあ・・・と思ってとりあえず後回し。
.htaccessファイルを置いて、そのなかに
SetEnv HOGEHOGE hugahuga
と書いて、見たら、環境変数に追加されたので、これは行けるかと思ったが
SetEnv PATH /path/to:$PATH
とやっても、既存のPATHを変更することができなかった。
で、しゃあないからplistを変えようと思って、plistを探し、 変更を試みたが、残念ながら反映されなかった。
よくわからないのが、plistの中に
<key>Disabled</key>
<true/>
と書かれていることで、このplistがdisabledなの?かよくわからん。
よーわからん。
論点整理
- Apacheの実行はwww/wwwというuser/group
- wwwというユーザーがplenvなんか知らない状態
- wwwというユーザーにplenvを使わせるにはどうしたらいいか?
- シバン行は #!/usr/bin/env perl としている
- plenv global 5.16.3 の状態で、perl index.cgi や ./index.cgi という実行をすればちゃんと バージョンは5.16で動く
追記 2013.924
- 自分の環境 Mac OS X 10.6.8
- Apache 2.2.24
その後のあがき
- /etc/launchd.conf にPATHを書いてみたが、やはりApachは認識しない
- /etc/paths に pathを書き加えたけどApacheの環境変数には反映されない
- ログアウトや再起動もちゃんとしてる
- /System/Library/LaunchDaemons/org.apache.httpd.plist の書き換えをもう一度やってApache再起動してみたけどダメ
- Apacheのhttpd.confのUserとGroupを自分のものに書き換えてみたが、PATHは一切変化しなかった
つまり、どういうことだ?Apacheにはまったくこちらの環境変数が渡されていないことになる。