質問: メールをトリガーにphpを自動起動したい phpでも聞いてみたのですが、考えてみるとphpと言うよりもlinuxのほうかもしれないということでお願いいたします 空メールの内容をphpに渡したいと言うことで、いろいろ試してみましたが、なかなかうまくいきません webminを使ってサーバの管理をしています mtaはsendmailを使っています sendmailの/etc/aliases にはこのように記述しました hoge: "|/usr/bin/procmail" /etc/procmailrc にはこのように記述しています path=/usr/bin:/bin:/usr/local/bin maildir=/var/spool/mail logfile=/var/www/html/****/procmail.log lockfile=/var/www/html/****/procmail.lock :0 |/var/www/html/****/empty_mail_regist.php 私の考えでは hoge@hoge.comにメールが来る ↓ sendmailが/usr/bin/procmailの起動 ↓ procmailが/etc/procmailrc を読み込んでプログラム実行 となると思っているのですが間違うでしょうか? /etc/aliases に hoge: "|/var/www/html/***/empty_mail_regist.php" と記述した場合、phpのエラー(#!/usr/bin/php -q が抜けているなど)の場合はエラーメールが帰ってきます phpにアクセスはしているが実行できていない理由がわかりません プログラム的なものだと思い、きめうちでメールを送るスクリプトを書きましたがダメでした もちろん、コマンドラインで実行するとメールの送信はできます スクリプトの所有者とメールアドレスのユーザは別なのでどれがダメなのかと思い、chownでhogeに変更してみましたが変わりはありませんでした 参考にしたサイトはこちらです メール配信時のphpスクリプト起動(sendmail編)http://www.dolphy.gr.jp/webap/topic/smrsh.html
回答: メールを受け取ってからの処理は私はこんな感じにしてます。 function getstdin(){ $stdin = fopen("php://stdin", "r"); if (!$stdin) exit(); while ($line = fgets($stdin)) { $line = trim($line); $lines.=$line."\n"; } return $lines; } フローによって行ごとに配列でうけてもいいかもしれません。 なお挙動がつかみたいときは テストのメールデータをつくっておいてまさにパイプしてやれば よいでしょう。 cat mail.dat |/var/www/html/***/empty_mail_regist.php