Pb crontab ecrire dans un fichier sql

Pb crontab ecrire dans un fichier sql - Shell/Batch - Programmation

Marsh Posté le 29-04-2009 à 14:34:08    

Bonjour,
 
Je me retrouve avec un petit souci dans le script PHP, qui utiliser par crontab.
Je suis sur un serveur privé PLESK 9.0.1
Mon serveur vds-805571.amen-pro.com est sous linux ubuntu 8.04.
 
Nous voulons exécuter des scripts par le biais de crontab, donc on a deja un script qui fonctionne tres bien, qui recupere un capital et envois les mails. Il est execute tous les jours à 14h30. Aucun problème sur ce script.
 
Par contre je voulais faire un script très important qui sauvegarde toutes les bases de données dans des fichiers sql différents selon la BASE, donc quand je lance la page par le biais d'un navigateur internet, le script s'exécute et il genere le ou les fichiers SQL, par contre si je le lance depuis le terminal SHH, il commence à lister les Tables mais au moment d'écrire les données dans le fichier, les erreurs arrivent.
 
////// ERREUR TERMINAL ///////
warning : fopen() : SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /root owned by uid 0 in /var/www/vhosts/centraleresto.com/httpdocs/Base/sauvegarde_bdd.php on line 57
 
Warning : fopen(28-04-2009_17-35_27_immo-printing.sql): failed to open stream: No such file or directory in /var/www/vhosts/centraleresto.com/httpdocs/Base/sauvegarde_bdd.php on line 57
 
Warning : chmod(): Unable to access 28-04-2009_17-35_27_immo-printing.sql in /var/www/vhosts/centraleresto.com/httpdocs/Base/sauvegarde_bdd.php on line 58
////// ERREUR TERMINAL ///////
 
J'ai fait les vérifications des droits car mon chmod fonctionne bien par le navigateur mais en terminal rien du tout.
 
voici le script complet
<?php
function mysql_structure($user, $base, $pass) {
$host = 'host';
 
mysql_connect($host, $user, $pass);
mysql_select_db($base);
$tables = mysql_list_tables($base);
while ($donnees = mysql_fetch_array($tables))
{
$table = $donnees[0];
echo $donnees[0]."<br>";
$res = mysql_query("SHOW CREATE TABLE $table" );
if ($res)
{
$insertions = "";
$tableau = mysql_fetch_array($res);
$tableau[1] .= ";";
$dumpsql[] = str_replace("\n", "", $tableau[1]);
$req_table = mysql_query("SELECT * FROM $table" );
$nbr_champs = mysql_num_fields($req_table);
while ($ligne = mysql_fetch_array($req_table))
{
$insertions .= "INSERT INTO $table VALUES(";
for ($i=0; $i<=$nbr_champs-1; $i++)
{
$insertions .= "'".mysql_real_escape_string($ligne[$i])."', ";
}
$insertions = substr($insertions, 0, -2);
$insertions .= " );\n";
}
if ($insertions != "" )
{
$dumpsql[] = $insertions;
}
}
}
return implode("\r", $dumpsql);
}
 
$datejour = date('d-m-Y_H-i-s');
$mesBases = array("base1,base2" );
$mesUtils = array("root1, root2" );
$mesPass = array("pass1,pass2" );
for ($i=0; $i<count($mesBases); $i++)
{
 
 
 
$chemin = "Base/";
$nom_fichier =$datejour."_".$mesBases[$i].".sql";
echo "Chemin absolu : ".$chemin.$nom_fichier."<br>";
//echo "Nom du fichier 1 : ".$nom_fichier."<br>";
$monBackup = "\n\n CREATE DATABASE ".$mesBases[$i]." \n\n";
$structure = mysql_structure($mesUtils[$i], $mesBases[$i], $mesPass[$i]);
system("sudo /".$chemin.$nom_fichier."" );
// Ouverture du fichier
$inF = fopen($nom_fichier,'x+');
chmod ($nom_fichier, 0777);
 
if (is_writable($nom_fichier)) {
fwrite($inF, $structure);
} else {
echo "Problème d'écriture dans le fichier ".$nom_fichier."<p>contactez l'administrateur du site.";
}
fclose($inF);
 
//file_put_contents($nom_fichier, $structure);
//echo "".$structure."<br>";
$destinataires = "mail1@hotmail.com, mail2@gmail.com";
mail($destinataires, "Backup ".$mesBases[$i]." ".date("l d F Y" ), $monBackup);
}
?>
 
Si quelqu'un a deja eu ce problème, j'aimerai beaucoup un petit coup de pouce, car je commence à désespérer car pour le moment c'est moi le Crontab et je voudrais bien que ca se fasse en auto ^^
Merci d'avance ^^

Reply

Marsh Posté le 29-04-2009 à 14:34:08   

Reply

Marsh Posté le 29-04-2009 à 16:54:22    

Citation :

"warning : fopen() SAFE MODE Restriction in effect".

Bien que ce message ait été noté comme étant uniquement un avertissement, il s'agit en fait d'un message très important. Il indique que les opérations sur les fichiers sont interdites à cause du "safe mode". Il faut trouver une autre solution que l'utilisation de ce "terminal SHH" (qui est peut-être "ssh" en fait).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed