• 締切済み
  • すぐに回答を!

メールをトリガーに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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数933
  • ありがとう数3

みんなの回答

  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

メールを受け取ってからの処理は私はこんな感じにしてます。 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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • メールをトリガーとして....

    Linuxでメールをトリガーとしてプログラムを動かしたいと思ってます。 「/etc/aliases」に「mailuser: "| /usr/bin/php -f /tmp/test.php"」を追加してもtest.phpは動かず、メールも届きません。 「/etc/aliases」に「mailuser: admin」としてみるとメールがadminに届いてほしいのですが、mailuserに1通届きます。 「/etc/aliases」に「mailuser: mailuser, admin」を追加するとメールがmailuserとadminに届いて欲しいのですが、mailuserに2通届きます。 「/etc/aliases」変更ごに「newaliases」は実行してます。 「PHP Version 5.1.6」「sendmail Version 8.13.8」で、VPSです。 どうして思うようにうごかないのでしょうか?

  • PHP+sendmailによるメール自動返信

    お世話になります PHPとsendmailを使ってメール自動返信(空メール登録)の仕組みを作っています いろいろ試行錯誤しながら、エラーメールが帰ってこないところまでは何とかいけたのですが、PHPが動いているそぶりが無いので困っております 本来は自動的にメールを返信するものですが、動作確認のためにこのようなログを吐き出すPHPをキックしています PHPにエラーがある場合はエラー内容がfatalerrorでメールが帰ってきます 以下のようにPermission deniedも帰ってくるので、PHP自体にはアクセスできていると思うのですがそこから先がわかりません ----- The following addresses had permanent fatal errors ----- |/var/www/html/log_test.php (reason: 126) (expanded from: <user@hoge.jp>) ----- Transcript of session follows ----- sh: |/var/www/html/log_test.php: Permission denied 554 5.3.0 unknown mailer error 126 ■/etc/aliasesの記述 user: |/var/www/html/log_test.php ■log_test.phpの内容 #!/usr/bin/php -q <?php require_once 'Log.php'; $conf = array('mode' => 0777, 'timeFormat' => '%X %x'); $file = &Log::factory('file', '/var/www/html/out.log', 'TEST', $conf); $file->log('ログ内容'); ?> 以下のコマンドも実行しています # cd /etc/smrsh # ls -la # ln -s /usr/bin/php ./php こちらを参考にしました↓ メール受信時にperlを実行(sendmail) http://lab302.blog65.fc2.com/blog-entry-96.html

    • 締切済み
    • PHP
  • procmailrcでの自動返信 catが使えない

    こんにちは、いろいろ調べたのですが どうしてもわからなくて質問させていただきます。 題名の件ですが、procmailのログに[cat: Permission denied] と出てきて、自動返信ができません。メールは届きます。 catが見る先のファイルのアクセス権は問題有りません。 レシピの記述は次のようになっています。 ▼.procmailrc記述 PATH=/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin:/pub/bin:. SHELL=/bin/sh MAILDIR=$HOME/Maildir/ DEFAULT=$MAILDIR LOCKFILE=$HOME/.lockmail SENDMAIL=/usr/sbin/sendmail MAIL=/home/test/mail.txt LOGFILE=$HOME/procmail.log SH=/home/test FORMAIL=/usr/bin/formail :0 h c * ^TO_test@xxxx.or.jp #* ^From:.*test@xxxx.or.jp * !^FROM_DAEMON * !^X-No-Loop: test@xxxx.or.jp |(/usr/bin/formail -r -A "X-No-Loop: test@xxxx.or.jp" \ -A "Precedence: test" ;\ cat $MAIL) |\ $SENDMAIL -t ▲以上が記述です。 たとえば、ユーザモードで下記のコマンドをたたくと mail.txtの内容を読み込んでくれて、メールが配信されます。   ★cat /home/test/mail.txt | /usr/sbin/sendmail -t★ 環境は  FreeBSD 6.1-RELEASE+qmail.1.03となっております。 もしわかる方がいらっしゃいましたら ご教授いただければと思います。

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

fオプションでどうでしょ? #!/パス/php -f

共感・感謝の気持ちを伝えよう!

質問者からのお礼

解決しました! sendmailの/etc/aliases の記述に問題があったようです hoge: |/var/www/html/***/empty_mail_regist.php ↑これから↓コレに変更すると動き出しました hoge: "|/usr/bin/php /var/www/html/***/empty_mail_regist.php" smrshにPHPのシンボリックリンクを張っていたので、大丈夫だと思っていたのですが大きな勘違いですね… どうもありがとうございました

質問者からの補足

ありがとうございます #!/usr/bin/php -f に変更し少し前進したような気がします The original message was received at Tue, 15 May 2007 18:18:51 +0900 from mail.hogehoge.jp [***.***.***.240] ----- The following addresses had permanent fatal errors ----- |/var/www/html/***/empty_mail_regist.php (reason: 1) (expanded from: <hoge@hoge.jp>) ----- Transcript of session follows ----- Could not open input file: 554 5.3.0 unknown mailer error 1 こちらがソースの先頭部分です //メールソースを標準入力から読み込み $source = file_get_contents("php://stdin"); if(!$source) { echo "fail!\n"; exit(); } 標準ストリームでメールが渡されていないのでしょうか…

関連するQ&A

  • メールをトリガーにPHPを実行したい

    初めまして、メールをトリガーにPHPを実行したいと思い、 下記のように.forwardを書きました。 ドメイン:example.com アカウント:hogehoge メールアドレス:info@hogehoge.example.com \info: "|user/bin/php /home/hogehoge/public_html/index.php" ですが、info@hogehoge.example.comにメールを送信しても実行してくれません。 どのように記述すれば良いのでしょうか? 環境 Linux Root /home/hogehoge Sendmail /usr/sbin/sendmail よろしくお願いします

  • メールの受信をトリガーとしてperlを起動させたい

    メールの受信をトリガーとしてperlを起動させたいと考えています。 vine linux 4.0 で MTAはpostfix 2.2.10 のみが入っています。 /etc/postfix/aliases に root: "|/usr/bin/perl /root/test.cgi" と書いて postfix reload した後 root 宛にメールをすると、メール自体は普通に届きますが perlは起動しません。 test.cgi 自体は直接叩いてやると、ちゃんと動いています。 main.cf には alias_maps = hash:/etc/postfix/aliases と記述してあります。 メール受信で perlを起動させるにはどうしたらよいのでしょうか?

  • PHPでメールが送信できない

    弊社でお客様のお問い合わせフォームをPHPで作成しているのですが、 お客様の環境でメールを送信することができません。 サーバー環境は以下の通りです。 Red Hat Linux 2.6.9 Apache/2.0.52 PHP 4.3.9 原因の調査で以下のようなチェックを行いました。 【お客様に御願いしたチェック】 1. サーバーでsendmailコマンドを利用してメールが送れるか? 送ることができる。 正しくキューイングされ、送信されることまで確認OK 2. php.iniのsendmail_pathの確認 sendmail_path は /usr/sbin/sendmail -i -tになっている。 /usr/sbin/sendmailはちゃんとある 3. mail()が使えないPHP /usr/sbin/sendmail,/usr/lib/sendmailがなければmail()が使えないPHPがビルドされるケース。 標準のPHPを利用しているので、問題ない。 【弊社が担当したチェック】 1. メールを送信するPHPスクリプトの不具合 PHPスクリプト自体は正常に動作する。 php.iniのdispaly_errorsをONに変更してもエラーメッセージはでない。 2. 簡単なmail()関数を使用したチェック 以下のようなphpスクリプトで確認。 OKがブラウザに表示される。 <?php if (mail("私のメールアドレス", "テスト", "テスト本文", "From:私のメールアドレス")) { echo "OK"; } else { echo "NG"; } ?> 何か原因があるのでしょうか? どなたか教えてください。

    • ベストアンサー
    • PHP
  • CentOSにてpostfixの設定

    CentOSにpostfixを導入し、メール受信をトリガーにシェルスクリプトを起動させたいと考えています。 レンタルサーバの為postfixが無かったのでyum install postfixでinstallしました。 その後の設定ですがイマイチ分からずとりあえず他のサイトを色々みてやったのですが、うまく動きません。 /etc/aliases にviエディタにて hoge.hoge.hoge: | "/usr/local/hoge/bin /usr/local/hoge/bin/sh restart.sh" を記述しました。 /etc/postfix/main.cf 上記設定ファイルには下記を有効にしています。 ・queue_directory = /var/spool/postfix ・command_directory = /usr/sbin ・daemon_directory = /usr/libexec/postfix ・mail_owner = postfix ・myhostname = hogehoge.com ---->同じでOK? ・mydomain = hogehoge.com ---->同じでOK? ・myorigin = $mydomain ・inet_interfaces = all ・mydestination = $mydomain, $myhostname ・unknown_local_recipient_reject_code = 550 ・alias_maps = hash:/etc/aliases ・alias_database = hash:/etc/aliases ・recipient_delimiter = - ・debug_peer_level = 2 ・debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 ・sendmail_path = /usr/sbin/sendmail.postfix ・newaliases_path = /usr/bin/newaliases.postfix ・mailq_path = /usr/bin/mailq.postfix ・setgid_group = postdrop ・html_directory = no ・manpage_directory = /usr/share/man ・sample_directory = /usr/share/doc/postfix-2.3.3/samples ・readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES /var/log/maillog には何も記載されていませんでした。 MTAもpostfixに設定しました。(system-switch-mailにて) /var/log/messages にも何も記載されていませんでした。 /etc/aliaesも変更しました hoge.hoge.hoge: | "/usr/bin /usr/local/hoge/bin/restart.sh" と一行追加しています。追加後 newaliaesも実行しDBも更新しています。 goge.hoge.hoge@example.comに携帯からメールを送信すると宛先不明等のメールは返ってきません なのでメールは受信できているのかとも思ったのですが /var/mail/hoge.hoge.hoge は0バイトになっているので受信していないようです。 レンタルサーバーのVPSを使っています。 そこでgoge.hoge.hoge@example.comのメールアドレスは作成済みです。 基本的な事は確認したつもりです。 postfixは起動しています。 MTAもpostfixに設定しました。 気になるのが、main.cfの設定です。 myhostname と mydomain が同じであることです。 どうぞ、ご教授の程宜しくお願い致します。

  • /etc/aliasesからphpを呼んだ場合、$_SERVERが取れません。

    /etc/aliasesから呼ばれたPHPで 開発機か本番機かを判別したいので、$_SERVERを 取得したいのですが取得できません。。 何か取得する方法はないでしょうか? ■/etc/aliases test: "| php /test.php ■test.php #!/usr/bin/php <?php mb_send_mail("a@a.com","",print_r($_SERVER)); ?>

    • 締切済み
    • PHP
  • PHP の system コマンド

    ブラウザからtest.php を実行してperl スクリプトを実行したいのですが、 うまく動きません。アクセス権の問題なのでしょうか。 よろしくお願いします。 ---------------- test.php ---------------------- <? system("/usr/bin/perl /home/usr/public_html/test.pl > /dev/null &"); echo "OK."; ?> ---------------- End File ---------------------- ---------------- test.pl ----------------------- #!/usr/local/bin/perl $sendmail = '/usr/sbin/sendmail'; open(SENDMAIL,"| $sendmail -t -i"); print SENDMAIL <<'END'; From: hoge@hoge.com To: moga@moga.com Subject: test Hello This is test END close(SENDMAIL); --------------------- End File -------------------------

    • ベストアンサー
    • PHP
  • #!/usr/local/bin/phpはどこに書くのですか?

    phpでWebページを作っています。 レンタルサーバーのマニュアルに「PHPで記述したCGIスクリプトの1行目に #!/usr/bin/phpまたは #!/usr/local/bin/phpと記述して下さい。 」とありますが、hoge.phpの「<?php ~ ?>」の「<?php」の次の行に書くのでしょうか?それとも前の行に書くのでしょうか? また、hoge.phpの中身が「<html><head></head><body> ~ <?php ~ ?> ~ </body></html>」の場合はどこに記述するのでしょうか? 初心者的な質問ですみませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • メールをPHPスクリプトに転送させたい

    コアサーバー(qmail)・独自ドメインで運用しています。 指定したメールアドレスに送信されたメールを、PHPスクリプトに転送させて処理したいと思っています。 「アカウント名\Maildir」と同じ階層に「.mailfilter」というファイルを作り、 to "|/usr/local/bin/php /virtual/user_name/hoge/mail.php" exit と記述したのですがうまくいきませんでした。 PHPのパスは、サポートページに書いてあったので間違ってはいないと思います。 もちろん、mail.phpまでのパスも確認しました。 PHPには、転送されたことが確実にわかるように mb_send_mail("mail_address", "TEST", "OK", "mail_address"); とだけ記述しています。 .mailfilterの書き方がおかしいのか、設置するディレクトリがおかしいのか、そもそもコアサーバーでこのようなことが可能なのか、さっぱりわかりません。 これから、どのようなことを確認・試行すればいいのか教えていただけないでしょうか。 宜しくお願いいたします。 なお、コアサーバーはサポートが悪く、1ヶ月待っても返事が返ってきませんので、こちらで質問させていただきました。

    • ベストアンサー
    • PHP
  • cronでPHP実行

    お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

  • PHPからHTMLメール

    LINUX7.0でPHP4を使っているんですが、プログラムからHTMLメールを送れません。何かいい方法はありませんでしょうか? mail()関数でも/usr/sbin/sendmailからでもいいのですが、ヘッダ部分がうまく付けることができていないようです。どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP