-2

私は完全に困惑しています。データベースにクエリを実行し、特定の条件が満たされた場合に電子メールを送信するファイルを 1 日に 2 回実行する必要があります。

このファイルを abc.php と呼びましょう。ブラウザに「www.mysite.com/abc.php」と入力すると、ファイルは完全に実行されます。条件が満たされると、(たとえば)「まあまあ、ここに情報があります: a、b、c」というメールが届きます。

しかし、cronでファイルを呼び出すと、なぜかメールが文字化けしてしまいます。「まあまあ、これが情報部分です」はわかりますが、「a、b、c」はわかりません。

私は完全に困惑しています。「まあまあ」もデータベースから来ており、それが両方のスポットで示されているので、dbクエリが機能していることがわかります。

http 呼び出しでは正常に機能するのに、cron 経由で呼び出すと機能しない理由がわかりません。別の方法で設定する必要があるアクセス許可はありますか? 別の方法で記述されているディレクトリ ツリー? 相対経路ではなく完全な経路を使用する必要がありますか?

検索で、php.ini ファイルが異なることに関連していると思われる問題を 1 つ見つけましたが、1 つの db クエリが正常に取得されているため、ここではそうではないと思います。ブラウザから呼び出されたときに完全に機能するため、これはコーディングの問題ではないと思います。しかし、パスが正しく設定されていないか、cronが別のユーザーとして実行されているか、別の権限が必要であることが原因であると思われます。

どんな助けや提案も素晴らしいでしょう。

編集:これがcron行です。ブラウザからファイルを実行するときに使用されている php.ini と一致するように編集できますか?

/ramdisk/bin/php5 -c /my/home/php.ini /my/home/sendmetheemail.php

別のmysql構成ファイルを使用している可能性もありますか? php部分は問題ないようですが、問題はデータです。

テストしたところ、wget は正常に動作します。

wget http://mydomain.com/sendmetheemail.php
4

1 に答える 1

0

同じように実行する必要があると想定している単一のファイルがありますが、異なる結果が生成されているため、明らかに仮定が間違っています。

この苦境に陥ったとき、私syslog(LOG_INFO,"Display some data.");は自分のコードでたくさんの行を使用します。cron 経由で直接実行した場合、それらの間の結果を確認してください。すべてが同じであれば、問題は解決していません。

于 2013-03-30T13:34:17.913 に答える