![PHP 脚本因 cron 而失败](https://linux22.com/image/1147812/PHP%20%E8%84%9A%E6%9C%AC%E5%9B%A0%20cron%20%E8%80%8C%E5%A4%B1%E8%B4%A5.png)
我想将 cron 与 2 个 php 脚本一起使用。
当我在目标服务器上使用 php /soncourt/index.php (例如)手动运行这些脚本时,它可以工作,但是当我想使用 CRON 时它会失败
第一个 cron:
*/15 * * * * /maquette/index.php >> /maquette/index.log 2>> index.err
第二个 cron:
*/15 * * * * /soncourt/index.php >> /soncourt/index.log 2>> index.err
这是第一个脚本:
<?php
///////////////////////////////////////////// Preparation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Recuperation des valeurs obligatoires
//Preparation de la DATE
date_default_timezone_set('Europe/Paris'); // Mise a la bonne heure (Timezone: Europe/Paris)
chdir("/maquette");
$date = date('Y-m-d H:i');
$minute = date('i');
require 'config.php';
//$minute = '15';
// Test de connection a la base de donnes
try {
$bdd = new PDO('mysql:host=localhost;dbname=maquette;charset=utf8', DB_USER, DB_PASSWORD);
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
//Telechargement et Chargement du fichier channels
file_put_contents("channels.xml", fopen('http://193.54.197.212/channels.xml', 'r'));
$Capteurs = simplexml_load_file("channels.xml");
///////////////////////////////////////////// Enregistrement des valeurs \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Insertion des Capteurs
// REMOTE CHANNELS
foreach ($Capteurs->RemoteChannels->Channel as $channel) {
print "Nom du capteur: {$channel->Tag} <br />\n";
print "Type de valeur {$channel->Unit}<br />\n";
print "$date <br />\n";
//Si 15 minutes
if ($minute == '15') {
if ($channel->Unit == 'C' || $channel->Unit == '°C') {
if ($channel->Tag == 'M4IST') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Temperature <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
if ($channel->Tag == 'M4ISH') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Humidite <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$valeur = $channel->Value * 0.10;
print "CO2 <br /> \n";
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
//Si 30 minutes
if ($minute == '30') {
if ($channel->Unit == 'C' || $channel->Unit == '°C') {
if ($channel->Tag == 'M4IST') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Temperature <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
if ($channel->Tag == 'M4ISH') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Humidite <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$valeur = $channel->Value * 0.10;
print "CO2 <br /> \n";
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
//Si 45 minutes
if ($minute == '45') {
if ($channel->Tag == 'M4IST') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Temperature <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
if ($channel->Tag == 'M4ISH') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
} else {
print "Humidite <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$valeur = $channel->Value * 0.10;
print "CO2 <br /> \n";
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
}
}
//Si 1h
if ($minute == '0') {
$connect = mysql_connect("localhost", "root", "IrisVitry51");
mysql_select_db("maquette");
if ($channel->Unit == 'C' || $channel->Unit == '°C' || $channel->Unit == '?C') {
if ($channel->Tag == 'M4IST') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
print "Temperature <br /> \n";
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
print "Valeur {$resultat15}";
print "Valeur {$resultat30}";
print "Valeur {$resultat45}";
print "Valeur {$resultat60}";
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
print "Valeur1 {$valeur1}";
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur','$date','$channel->Tag','C')");
} else {
print "Temperature <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
print "Valeur {$resultat15}";
print "Valeur {$resultat30}";
print "Valeur {$resultat45}";
print "Valeur {$resultat60}";
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
print "Valeur1 {$valeur1}";
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur','$date','$channel->Tag','C')");
}
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
if ($channel->Tag == 'M4ISH') {
$valeur = $channel->Value * 0.01;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
print "Temperature <br /> \n";
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
print "Valeur {$resultat15}";
print "Valeur {$resultat30}";
print "Valeur {$resultat45}";
print "Valeur {$resultat60}";
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
print "Valeur1 {$valeur1}";
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur','$date','$channel->Tag','%')");
} else {
print "Humidite <br /> \n";
$valeur = $channel->Value * 0.10;
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
print "Valeur {$resultat15}";
print "Valeur {$resultat30}";
print "Valeur {$resultat45}";
print "Valeur {$resultat60}";
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
print "Valeur1 {$valeur1}";
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur','$date','$channel->Tag','%')");
}
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$valeur = $channel->Value * 0.10;
print "CO2 <br /> \n";
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$valeur' WHERE TagCapteur ='$channel->Tag'");
print "Valeur: {$valeur} <br />\n";
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
print "Valeur {$resultat15}";
print "Valeur {$resultat30}";
print "Valeur {$resultat45}";
print "Valeur {$resultat60}";
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
print "Valeur1 {$valeur1}";
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur1','$date','$channel->Tag','ppm')");
}
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60= '0' WHERE TagCapteur='$channel->Tag'");
}
}
unlink("channels.xml");
////////////////////////////////////////// NE PAS UTILISER ///////////////////////////////////
//$bdd->exec("INSERT INTO capteur(TagCapteur,idTypeCapteur,Zone,Salle,Emplacement) VALUES('$channel->Tag','1','1','Exercice 1','sortie')");
//mysql_query("INSERT INTO articles SET nom='".($article->nom)."' AND id='".($article->id)."'") or die("Erreur MySQL : ".mysql_error());
//var_dump($channel->Unit);
//$bdd ->exec('SET NAMES utf8');
?>
Here the second script :
<?php
///////////////////////////////////////////// Preparation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Recuperation des valeurs obligatoires
//Preparation de la DATE
chdir("/maquette");
require 'config.php';
date_default_timezone_set('Europe/Paris'); // Mise a la bonne heure (Timezone: Europe/Paris)
$date = date('Y-m-d H:i');
$minute = date('i');
// Test de connection a la base de donnes
try {
$bdd = new PDO('mysql:host=localhost;dbname=Microcreche;charset=utf8', DB_USER, DB_PASSWORD);
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
//Telechargement et Chargement du fichier channels
file_put_contents("channels.xml", fopen('http://80.13.148.4/channels.xml', 'r'));
$Capteurs = simplexml_load_file("channels.xml");
///////////////////////////////////////////// Enregistrement des valeurs \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Insertion des Capteurs
// REMOTE CHANNELS
foreach ($Capteurs->RemoteChannels->Channel as $channel) {
//Si 15 minutes
if ($minute == '15') {
if ($channel->Unit == 'C' || $channel->Unit == '°C') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
print "ok";
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
}
//Si 30 minutes
if ($minute == '30') {
if ($channel->Unit == 'C' || $channel->Unit == '°C' || $channel->Unit == 'ºC') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
}
//Si 45 minutes
if ($minute == '45') {
if ($channel->Unit == 'C' || $channel->Unit == '°C' || $channel->Unit == 'ºC') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
}
}
//Si 1h
if ($minute == '0') {
$connect = mysql_connect("localhost", "root", "IrisVitry51")or die(mysql_error());
mysql_select_db('Microcreche',$connect);
if ($channel->Unit == 'C' || $channel->Unit == '°C' || $channel->Unit == 'ºC') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur1','$date','$channel->Tag','C')");
}
if ($channel->Unit == '%' || $channel->Unit == '%H') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur1','$date','$channel->Tag','%')");
}
if ($channel->Unit == 'PPM' || $channel->Unit == 'ppm') {
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60='$channel->Value' WHERE TagCapteur ='$channel->Tag'");
$req15 = "SELECT Mesure15 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur15 = mysql_query($req15, $connect) or die(mysql_error());
$req30 = "SELECT Mesure30 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur30 = mysql_query($req30, $connect) or die(mysql_error());
$req45 = "SELECT Mesure45 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur45 = mysql_query($req45, $connect) or die(mysql_error());
$req60 = "SELECT Mesure60 FROM MesureCapteurTemp WHERE TagCapteur='$channel->Tag'";
$valeur60 = mysql_query($req60, $connect) or die(mysql_error());
$resultat15 = mysql_result($valeur15, 0);
$resultat30 = mysql_result($valeur30, 0);
$resultat45 = mysql_result($valeur45, 0);
$resultat60 = mysql_result($valeur60, 0);
$valeur1 = ($resultat15 + $resultat30 + $resultat45 + $resultat60) / 4;
$bdd->exec("INSERT INTO MesureCapteur(Valeur,Date,TagCapteur,Unite) VALUES('$valeur1','$date','$channel->Tag','ppm')");
}
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure15= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure30= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure45= '0' WHERE TagCapteur='$channel->Tag'");
$bdd->exec("UPDATE MesureCapteurTemp SET Mesure60= '0' WHERE TagCapteur='$channel->Tag'");
}
}
unlink("channels.xml");
?>
我该如何修复它?
答案1
正如我所提到的,您的问题在于您的环境。查看您的 php 脚本和调用它的 crontab 条目,没有任何提及您更改为包含依赖项文件的目录。您的默认文件夹current working directory
是您的主文件夹 ( ~/
)。您的脚本文件夹与您的 cron 正在运行的目录不同。
您的文件也myscript.php
使用了require 'config.php';
指令,但它并没有指向/myscript/
它所在的文件夹。
解决此问题的最简单方法之一是将当前工作目录更改为包含脚本文件的目录。
编辑文件
更改自:
<?php
///////////////////////////////////////////// Preparation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Recuperation des valeurs obligatoires
//Preparation de la DATE
date_default_timezone_set('Europe/Paris'); // Mise a la bonne heure (Timezone: Europe/Paris)
$date = date('Y-m-d H:i');
$minute = date('i');
require 'config.php';
改成:
<?php
///////////////////////////////////////////// Preparation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Recuperation des valeurs obligatoires
//Preparation de la DATE
chdir("/myscript");
date_default_timezone_set('Europe/Paris'); // Mise a la bonne heure (Timezone: Europe/Paris)
$date = date('Y-m-d H:i');
$minute = date('i');
require 'config.php';
您提到了调试。我不知道您使用的调试方法,但您可能会发现调试 cron 脚本的一种方便的方法是将其重定向到日志文件。默认情况下,输出将发送到您的/var/log/syslog
。将输出重定向到首选文件将为您提供更清晰的日志。
添加 shebang 标头并使您的初始脚本可从命令行执行。这将提供方便的日志文件重定向功能。
crontab 条目和脚本文件的注意事项
Crontab 条目:
Cron : */15 * * * * /myscript/myscript.php >> /myscript/script.log 2>> myscript.err
PHP 脚本:
#!/usr/bin/php
<?php
///////////////////////////////////////////// Preparation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Recuperation des valeurs obligatoires
//Preparation de la DATE
chdir("/myscript");
date_default_timezone_set('Europe/Paris'); // Mise a la bonne heure (Timezone: Europe/Paris)
$date = date('Y-m-d H:i');
$minute = date('i');
require 'config.php';
不要忘记chmod +x
你的/myscript/myscript.php
。
最终解决方案
这个问题在聊天讨论中得到了解决(见评论)。主要问题(很可能也是最终问题)是文件的位置。从命令行运行应用程序并解决错误解决了问题。
通过研究日志(标准输出)仅显示两个脚本运行的一个实例,解决了 cron 中两个 php 脚本的问题。这是由于与输出重定向混淆造成的>>
。>
单个大于号覆盖了前一个实例。>>
重定向解决了该部分。