生の POST データをSQLite (v2)データベースに挿入する単純な php Paypal IPN リスナーがあります。それは働いていた。それから...それは機能しなくなりました。(私はそれに変更を加えたことを覚えていません。) Paypal と通信するために CURL を使用して Paypal が提供する基本的な php サンプルを使用します (その後に db 挿入が続きます)。503 Service Unavailableエラーが発生するだけです。それは機能します (実際には何もしません:)) 最後の行をコメントアウトすると、そのシンプルには「sqlite_exec(...)」が含まれます。
または、MySQLの挿入が正常に機能します。
結果の郵送も同様に機能します。
SQLite データベースは正常に表示されます。別のスクリプトは、通常どおり読み取りと更新を行います。
Web ホストは、サーバー側で問題を認識しません。
誰でもこれを理解できますか?それとも、POST データを別のスクリプトに送信して、1 つのページとしてまとめて処理するのではなく、個別に処理する方法があるのでしょうか?
更新:挿入しようとしているのは、「生の投稿データ」文字列です...
$raw_post_data = file_get_contents('php://input');
...ここのphpサンプルコードの下の一番上の行に見られるように: https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623 . 私のスクリプトは、下部に挿入があることを除いて同じです。基本的には次のようになります。
$dbloc = "/db/ipn.sqlite";
if($db = sqlite_open("$dbloc", 0666, $sqlite_error)){}else{die ($sqlite_error);}
$datetime = date("Y-m-d H:i:s");
$data = $raw_post_data;
$sql="INSERT INTO Paypal (entrydate,verified,data) values ('$datetime',$verified,'$data')";
sqlite_exec($sql,$db);