電子書籍の厳選無料作品が豊富!

初めて質問させていただきます。
初めてなので、質問の仕方にも不手際があるかもしれませんが
ご容赦ください。

サーバーはWEBアリーナさんのをお借りしています(webarenasuite2)
メールはPostfixで受信しています。

<<目的>>
メールの受信をトリガーにしてPHPプログラムを起動させようとしております。最終的にはメールの本文などのDBに取り込もうとしていますが、とりあえずプログラムを起動できるかを確認したかったのでメールの内容などは関係なくDBに適当な名前のテーブルを作成するようなプログラムになっています。

<<症状>>
対象のメールアドレスにメールを送ると、エラーメッセージなどは一切返ってきません。が、望む動作も一切しません。
直接test.phpをブラウザで動かすと、DBにテーブルを作成します(望んだ動きです)。
おそらくtest.phpを.forward経由で動かせていないのだろうと思いますが、その理由がわかりません。



自分が確認したことを以下に記します。

(1).forwardの置き場所
プログラム起動ではなく、メール転送の記述を行い、メールの転送が行われることを確認しました。.forwardの置き場所は間違えていないかと思います。

(2).forwardのパスの確認
.forwardには以下の記述がしてあります。
|"/usr/bin/php -q /home/*****/web/test.php"

phpが/usr/bin/phpなのはおそらく間違いないかと思います。
また、絶対パスの指定はtest.phpにrealpathの記述を書いて
確かめました。


(3)パーミッションの確認
.forwardは600
test.php自体や、その上の階層のwebや*****、homeなどもパーミッションも実行権限を与えてみました。755などになっています。


以上です。
2日以上詰まってしまいました。

お手数をおかけしますが、お手すきの方がいらっしゃいましたら、よろしくおねがいします。

A 回答 (3件)

ANo.1の回答にあるエラーメッセージの


fatal: execvp /user/bin/php: No such file or directory
がコピー&ペーストなら
は/userでなく/usrを指定してみた結果が知りたいです。

この回答への補足

お返事がおくれました。
誤記していたようです。
usrでやったところ、メールログには
status=deferred (Command died with signal 7: "/usr/bin/php -q /home/darts/***/test.php")
と表示されています。

補足日時:2007/12/20 13:49
    • good
    • 0

>ちなみに/usr/bin/phpの状態でのメールのlogは


>fatal: execvp /user/bin/php: No such file or directory
>となっていて、ファイルがないといわれています。

改行コードが「CR+LF」になっていませんか?

UNIX系の改行コードは「LF」のため改行コードに「CR+LF」を使用していると
パスが「/user/bin/php[CR]」と解釈されてファイルが見つからないと
いうエラーがでることがよくあります。

この回答への補足

回答をいただきありがとうございます。
改行コードの確認を行いました。
実際にCR+LFになっていたので、喜びいさんでLFにかえたのですが
やはり同じ内容でした。

phpの場所で悩んでいたのですが
findではなくwhereisでphpを叩くと
usr/bin/phpだったので、おそらくこちらで正しいのかなぁと思っています。

その後、phpファイルを介在させるとおかしくなるのかと思い
forwardファイルの中身をコマンドに替えてみました。
内容は
|"touch /hoge"
というものです。
エラーメールが返ってきて
Command died with status 1: "touch /hoge". Command
output: touch: cannot touch `/hoge': Permission denied
ということでした。

やはり、メールからパイプされて、このコマンドなりphpを動かす権限の問題だとは思うのですが・・・

補足日時:2007/12/15 17:59
    • good
    • 0

ブラウザ経由ではなく、コンソール経由でphpをたたくと動きますか?

この回答への補足

ご回答いただきありがとうございます。
puttyを利用してログインしていますが、
直接phpを叩いても動かすことが出来ます。
(テーブルが作成されます。)
printでsql文を吐き出させていますが、それも表示されます。

コンソールでfind -name phpを叩いたところ
/usr/bin/php以外に/var/lib/phpという表示が出てきたので
今そっちで試してみています。
/var/lib/phpにするとエラーメールが返ってくるようになりました。
内容としては
Command died with status 1: "/var/lib/php -q
/home/***/web/test.php"
という内容です。

実行権限の問題であるという記述をgoogle先生経由で見つけたので
postfixの設定かと思い、main.cfの
default_privsをnobodyからユーザの名前に変えてみました。
このユーザはtest.phpを作成したユーザです。
それでも同じエラーを吐き出します。

/var/lib/phpに設定した状態でメールのlogを見ると
execvp /var/lib/php: Permission denied
となっているので、どこかの実行権限がおかしいのだと思うのですが・・・


ちなみに/usr/bin/phpの状態でのメールのlogは
fatal: execvp /user/bin/php: No such file or directory
となっていて、ファイルがないといわれています。


どんどんこんがらかっております。。。

補足日時:2007/12/15 15:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!