こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メールをトリガーにするとファイルへのパスが通らない

以下のソースなのですが、ブラウザより直にアクセスした場合には正常に動作するのですが、Forwardさせたメールをトリガーにして動作させると、なぜかrequireしている二つのファイルへのパスが通らなくなりエラーを出力してしまいます。

Command output: Can't locate
../../../../testconfig.txt in @INC ~(後略)~

どうしてなのでしょうか?
/home/~testconfig.txtとフルパスかいてやれば、メールをトリガーにした場合でも正常動作しますが、フルパス指定は避けたいのです。

#!/usr/bin/perl

use CGI;
use DBI;
use HTML::Template;
use Jcode;
use MIME::Parser;

use FindBin;
use lib "$FindBin::Bin/my_lib";

use MIME::Lite;
require '../../../../testconfig.txt'; #error
require './my_lib/sub_function.pl'; #error

my $msg = MIME::Lite->new(
From => 'webmaster@***.com',
To => 'user@***.org',
Subject =>'Error message',
Type => 'text/plain; charset="iso-2022-jp"',
Data => 'This is message text',
Encoding => '7bit',
);

$msg->send;

exit;

投稿日時 - 2012-07-13 13:51:19

QNo.7588051

困ってます

質問者が選んだベストアンサー

パスが通らない、となるとカレントディレクトリが違うのでしょう。
それを調べて見ては。

投稿日時 - 2012-07-13 13:59:10

補足

以下のモジュールで調べましたが、メールをトリガーにするとカレントディレクトリが変わってしまっていました。

use Cwd;
my $wd = Cwd::getcwd();

ブラウザで直にアクセスした際のカレントディレクトリ
/home/***/public_html/cgi-bin/test/pg_v3

メールをトリガーにしてアクセスした際のカレントディレクトリ
(一時的にtestconfig.txtまではフルパス指定しました)
/home/***/mail/test***.com/test@test***.com

「test@test***.com」は送信したメールの宛先アドレス

これまでも同様のメールをトリガーにしたものはやっているのですが、これとほぼ同構成で何の問題もなく動作していたので、今回のはなぜこうなってしまうのか、それが知りたいです。

投稿日時 - 2012-07-13 14:23:15

お礼

おかしいなと思い、正常動作している別のプログラムでも同様にカレントディレクトリを取得してみたところ同じ結果に・・・。
じーっと見ました・・・、require してるところの ../ がひとつ多い・・・
ご面倒おかけしました。

投稿日時 - 2012-07-13 17:20:08

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問