私は完全に困惑しています。データベースにクエリを実行し、特定の条件が満たされた場合に電子メールを送信するファイルを 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