[perlメモ]use libのかわりに.htaccessでSetEnvする
◇関連記事:[perlメモ]モジュールをローカル(ユーザー領域)にインストールする
上のエントリでCPANのperlのモジュールを共用レンタルサーバで使うためにユーザ領域にインストールして利用する方法を書きました。この場合ユーザ領域にインストールしたモジュールが参照出来るように cgiでuse libしてあげる必要があるのですが、cgiが多数ある場合個々にuse libを追加していくのは大変です。いい方法がないかなーとおもっていたのですが、NanoAで遊んでいるときにNanoAに付属の.htaccessを見ていたらSetEnvしているのを見てひらめきました。これでPERL5LIB設定してあげればuse libしなくても行けるんじゃね?と。(蛇足ですがNanoAはライブラリ参照するディレクトリを設定するところがあるのでそういう心配はいらないです。)
NanoA付属の.htaccess
DirectoryIndex nanoa.cgi
<FilesMatch "(\.(pm|mt|conf)|~)$">
Deny from All
Order deny,allow
</FilesMatch>
# if .htaccess is being processed, the value is set to 1
SetEnv HTTP_NANOA_USE_HTACCESS 1
cgiの頭で下の様にuse libする代わりに
use lib qw( /home/hogehoge/local/lib/perl5/site_perl/5.8.9 /home/hogehoge/local/lib/perl5/site_perl/5.8.9/mach );
下の様にSetEnvする.htaccessを作成しておいてみたところuse libしなくても動作するようになりました。
SetEnv PERL5LIB /home/hogehoge/local/lib/perl5/site_perl/5.8.9:/home/hogehoge/local/lib/perl5/site_perl/5.8.9/mach
自分で作ったウェブアプリケーションじゃなくてどこからかダウンロードした物をレンタルサーバーに設置して使う時にユーザ領域にCPANモジュールをインストールして参照させたい時にはいいんじゃないかと思います。
◇関連記事:レンタルサーバーで使えるperl用の簡単なWAFてなにかないかな