Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1159 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Pb crontab ecrire dans un fichier sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb crontab ecrire dans un fichier sql

n°1879286
monkeydale​x
Posté le 29-04-2009 à 14:34:08  profilanswer
 

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 ^^

mood
Publicité
Posté le 29-04-2009 à 14:34:08  profilanswer
 

n°1879401
olivthill
Posté le 29-04-2009 à 16:54:22  profilanswer
 

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).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Pb crontab ecrire dans un fichier sql

 

Sujets relatifs
Function, Vérification doublons dans un formulaireCopier un fichier depuis un PDA
écrire sur une imagedéposer fichier via formulaire et recup
Récuperer une valeur d'un onData, parser un fichier srt[PHP] Intégration d'un champ 'joindre un fichier' dans un formulaire
Extraire que certaines données d'un fichier csvCreation d'un index pour fichier
créer un fichier avec OutputStreamConnaître le contenu d'un fichier compressé
Plus de sujets relatifs à : Pb crontab ecrire dans un fichier sql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR