1

私はここですべての質問をチェックし、これに関するすべての利用可能な質問を検索しました。しかし、何も私はこれをデバッグするのに役立たなかった。phpスクリプトのコマンドライン実行の問題

私はデータベースの更新やファイルlog.txtへの書き込みなどのローカル機能を実行しようとするphpスクリプトlog.phpを持っています。私はsystem32フォルダに配置されたbatファイルlog.batからタスクウィンドウのタスクスケジューラでこれを実行しようとしています。しかし、これはブラウザ上でうまく動作し、データベースとlog.txtファイルを更新しますが、batファイル/コマンドラインでphpファイルを実行しますが、データベースは更新されず、log.txtも更新されません。コンソールウィンドウで

log.php

<?php 
    ini_set('display_errors', true); 
    error_reporting('E_All'); 
    $date = date("Y-m-d H:i:s"); 
    $conn=mysqli_connect('localhost','root','') or die("CONNECT Error : ".$conn->error); 

    $chkuser=mysqli_query($conn,"SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username')") or die("CHECK USER ERROR : ".$conn->error); 

    if($chkuser){ 
     echo "<p>USER 'username'@'localhost' EXISTS"; 
    } else { 
     $user=mysqli_query($conn,"CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';"); 
     /// or die("CREATE USER Error : ".$conn->error); 
     if($user) { 
      echo "<p>USER 'username'@'localhost' with PASSWORD 'password' CREATED Successfully !</p>"; 
     } else { 
      echo "<p>USER 'username'@'localhost' with PASSWORD 'password' CREATION FAILED !!!</p>"; 
     } 
    } 

    $grant = mysqli_query($conn,"GRANT ALL ON db1.* TO 'username'@'localhost'"); 
    //  or die("GRANT PRIVILEGES Error : ".$conn->error); 

    if($grant) { 
     echo "<p>GRANT ALL PRIVILEGES TO 'avion'@'localhost' EXECUTED Successfully !</p>"; 
    } else { 
     echo "<p>GRANT ALL PRIVILEGES TO 'username'@'localhost' FAILED !</p>"; 
    } 

    $dbase=mysqli_query($conn," CREATE DATABASE login"); 
    // or die("Table DATABASE Error : ".$conn->error); 

    if($dbase) { 
     echo "<p>DATABASE login CREATED Successfully !</p>"; 
    } else { 
     echo "<p> Database Create Error : ".$conn->error."</p>"; 
    } 

    if(mysqli_query($conn,"SHOW DATABASES LIKE 'login'")) { 
     mysqli_select_db($conn,'login'); 
     $table=mysqli_query($conn, "CREATE TABLE login (Date DATETIME, id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id))"); 
     // or die("Table Create Error : ".$conn->error); 

     if($table) { 
      echo "<p>TABLE login CREATED Successfully !</p>"; 
     } else { 
      echo "<p> Table Create Error :".$conn->error."</p>"; 
     } 

     $addlog=mysqli_query($conn,"INSERT INTO login (Date) VALUES('$date')"); 

     if($addlog) { 
      echo "<p>TABLE log UpDATED !</p>"; 
     } else { 
      echo "<p> Add Log Error :".$conn->error."</p>"; 
     } 

     $msg=$date.PHP_EOL; 

     if(is_file("log.txt")) { 
      $fh=fopen("log.txt","a"); 
     } else { 
      $fh=fopen("log.txt","w"); 
     } 

     $fw=fwrite($fh, $msg); 

     if($fw) { 
      echo "<p>Log file Updated !</p>"; 
     } else { 
      echo "<p> Log file Not Updated !</p>"; 
     } 

    } else { 
     echo "<p>Table Not Created Bcoz DATABASE login DOES NOT EXIST !</p>"; 
    } 

    mysqli_close($conn); 
?> 

log.bat

"C:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.exe" -f "C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\log\log.php" 

出力log.batは、すべての成功メッセージが表示されたとき。しかし、データベースまたはlog.txtは更新されません。

私はここで間違っていますか?

PS:タスクスケジューラでうまく動作する他の2つのバットファイルがあります。 1つはGmail経由でメールを送信し、もう1つはサードパーティ製のスクリプトを通じてSMSを送信します。

+0

現在の作業ディレクトリを確認しましたか? – Rei

+0

はい@RayRadin。ディレクトリは正常です。 log.phpとlog.txtは/ path/log /フォルダにあり、バッチファイル(log.bat)はwindows/system32/folderにあります。そして私はsystem32フォルダの中からコマンドラインでlog.batファイルを実行しています – user3526204

答えて

1

私はあなたのコードをテストすることにしました。 しかし、すべての最初の、この行:

error_reporting('E_All'); 

は実際にこれと同じです:

error_reporting(0); 

うん、あなたはエラー報告を無効にしています。 それは次のようになります。

error_reporting(E_ALL); 

は今、奇妙なことは、実際にC:\Users\RRadin\AppData\Local\VirtualStoreで作成されlog.txtファイルであること。 これを解決するには、__DIR__をファイル名に追加します。

if(is_file(__DIR__."/log.txt")) { 
    $fh=fopen(__DIR__."/log.txt","a"); 
} else { 
    $fh=fopen(__DIR__."/log.txt","w"); 
} 

残念ながら、私はあなたのデータベースの更新問題を再現することはできません。このよう 。 私のデータベースにあるloginテーブルはうまく更新されています。 スクリプトを6回実行しましたが、今は6つのレコードがあります。

+0

あなたはそれを@Ray Radinに釘付けにしました。それを行ったのは_DIR_でした。 E_ALLについては、引用符を使用しないと、「Undefined Constanr E_ALLを使用すると、「E_ALL」と解釈される」というエラーがcmdウィンドウに表示されます。そしてデータベースは今更新されています。私は何を試したのかわからない、それは働き始めた。 log.txtアップデートの解決に感謝します。 – user3526204

+0

ようこそ。あなたのプロジェクトに幸運。 – Rei

関連する問題