0

特定の電子メールアドレスが電子メールを受信したときに実行されるスクリプトがあり、procmail は PHP スクリプトにパイプし、それが Plancake によって解析されますが、多くの問題はありません。本文に特定のテキストが含まれているかどうかに応じて、strpos に if ステートメントがあります。何らかの理由で、MySQL コードを追加すると、すべてが機能しなくなります。残念ながら、そのセットアップ方法では、エラーチェックを追加する方法がよくわかりません。コードは次のとおりです。

<?php

require_once("PlancakeEmailParser.php");


 $rawEmail = '';
if (($fp = fopen('php://stdin', 'r')) !== false) {
    while (!feof($fp)) {
        $rawEmail .= fread($fp, 1024);
    }
    fclose($fp);

}

$emailParser = new PlancakeEmailParser($rawEmail);
$emailSubject = $emailParser->getSubject();
$emailBody = $emailParser->getPlainBody();
$emailHeader = $emailParser->getHeader('From');

$message = "FROM: ".$emailHeader."\n\nSubject: ".$emailSubject."\n\nBody: ".$emailBody;

$status = 4;

preg_match("/\d+/", "$emailSubject", $matches);
$number = $matches[0];

$short = substr($message, 0, strpos( $message, 'Begin'));
if (stripos($short,'approve') !== false) {
    echo 'true';
$msg = approve;
//file_put_contents('/home/symantec_mail/task' . $number . 'short.php',$msg);
file_put_contents('/home/symantec_mail/task' . $number . 'approve_short_reply.txt',$message);
file_put_contents('/home/symantec_mail/task' . $number . 'approve_reply.txt',$rawEmail);
}

if (stripos($short,'complete') !== false) {
    echo 'true';
$msg = complete;

次の mysqli コードのコメントを外すと、すべてが停止します。

//$mysqli = new mysqli("localhost", "user", "pass", "db");
//$update = $mysqli->prepare("UPDATE task_overview SET status = ? WHERE task_id = ?");
//$update->bind_param('ii', $status, $number");
//$update->execute();

コードの残りの部分。

//file_put_contents('/home/symantec_mail/task' . $number . 'short.php',$msg);
file_put_contents('/home/symantec_mail/' . $number . 'complete_short_reply.txt',$message);
file_put_contents('/home/symantec_mail/' . $number . 'complete_reply.txt',$rawEmail);
}
?>

これらのコマンドを実行できない理由が本当にわかりません。通常の Web サーバーとは異なるシェル アカウント上にあることを指摘しておきますが、PHP はまだ実行されていますが、MySQL サーバーと通信しているかどうかはよくわかりません。エラーチェック用であっても、何か提案があればお願いします。よろしくお願いします。

4

0 に答える 0