63627


ローカル環境ではうまくいったのですが、Xserver上で実行したところ、デバッグ用のメールが、while構文の中までメールの送信、かつ、コードの実行ができたのですが、while構文の後からコードの実行ができなくなっております。

初歩的なところかもしれませんが、理由がお気づきの方、ご指導をお願いします。

[code]

    <?php
    
     // ファイルを変数に格納
    //$filename = '../log/log.txt';
    $filename = './log.txt';
    
    // fopenでファイルを開く（'r'は読み込みモードで開く）
    $fp = fopen($filename, 'r');
    
    
    
    // whileで行末までループ処理
    while (!feof($fp)) {
    
      // fgetsでファイルを読み込み、変数に格納
      $txt = fgets($fp);
    
      // ファイルを読み込んだ変数を出力
      $log = $log.$txt;
    
    }
     // fcloseでファイルを閉じる
    fclose($fp);
    
    
    // メール情報
    $mailto = "XXXX@gmail.com"; // 宛先のメールアドレス
    $subject = "Daily log from XXXX.biz";
    $content = $log;
    $mailfrom = "From:info@xn--XXXX.biz"; // From:送信元のメールアドレス(サーバパネルで設定したやつ)
    
    
    // メール送信処理
    $result = mail($mailto,$subject,$content,$mailfrom);
    
    // メール送信処理結果出力
    if($result){
        echo "送信成功!";
        $fp = fopen($filename , 'r+');
        flock($fp, LOCK_EX);
    
    //2番目の引数のファイルサイズを0にして空にする
    ftruncate($fp,0);
    
    flock($fp, LOCK_UN);
    fclose($fp);
    
    }else{
        $content = "送信失敗";
        $result = mail($mailto,$subject,$content,$mailfrom);
    }
    ?>
    
[/code]


CC BY-SA 4.0
2020-03-06T01:31:31.950
63615
2020-03-13T11:53:19.193
2020-03-13T11:53:19.193
3060
31870
question
php cron
cron 経由で実行した PHP スクリプトからのメール送信ができない


Cron のカレントディレクトリは実行ユーザのホームディレクトリになります。

そのため

[code]

    $filename = './log.txt';
    
[/code]

この参照が間違っている可能性があります。  
問題なければ絶対パスで指定するか、事前にcdでディレクトリ移動しておく必要があります。


CC BY-SA 4.0
2020-03-06T07:10:05.663
63627
2020-03-06T07:10:05.663
22665
63615
answer