私はここですべての質問をチェックし、これに関するすべての利用可能な質問を検索しました。しかし、何も私はこれをデバッグするのに役立たなかった。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を送信します。
現在の作業ディレクトリを確認しましたか? – Rei
はい@RayRadin。ディレクトリは正常です。 log.phpとlog.txtは/ path/log /フォルダにあり、バッチファイル(log.bat)はwindows/system32/folderにあります。そして私はsystem32フォルダの中からコマンドラインでlog.batファイルを実行しています – user3526204