Problème exec
Sh@tter
Messages postés
157
Date d'inscription
Statut
Membre
Dernière intervention
-
Sh@tter Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
Sh@tter Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà mon problème : je souhaite faire un backup de ma BDD manuellement (je suis sous MySQL). Je suis donc passer par mysqldump et la commande exec en php et tout marche très bien, à condition d'enregistrer mon fichier sur le même disque dur que wamp, à savoir le C. Par contre lorsque je souhaite enregistrer ce fichier sur un autre dd (le f) rien ne se passe et les logs d'apache me disent que le chemin n'est pas trouvé.
Voici un bout de code pour mieux comprendre :
$cmd_mysqldump_local = "C:\wamp\bin\mysql\mysql5.0.51a\bin\mysqldump.exe --host=".$host." --user=".$user." --password=".$pass." ".$bases." > C:\sauvegardes/".$save_name;
$cmd_mysqldump_serveur ="C:\wamp\bin\mysql\mysql5.0.51a\bin\mysqldump.exe --host ".$host." --user ".$user." -- password= ".$bases." > T:\Maintenance/".$save_name;
//on éxécute
exec($cmd_mysqldump_local);
exec($cmd_mysqldump_serveur);
Tout se passe bien pour le premier mais pas pour le deuxième... :S La solution est peut-être dans le httpd.conf mais pas moyen de trouver où.
Auriez-vous une petite idée SVP?
Merci d'avance.
Voilà mon problème : je souhaite faire un backup de ma BDD manuellement (je suis sous MySQL). Je suis donc passer par mysqldump et la commande exec en php et tout marche très bien, à condition d'enregistrer mon fichier sur le même disque dur que wamp, à savoir le C. Par contre lorsque je souhaite enregistrer ce fichier sur un autre dd (le f) rien ne se passe et les logs d'apache me disent que le chemin n'est pas trouvé.
Voici un bout de code pour mieux comprendre :
$cmd_mysqldump_local = "C:\wamp\bin\mysql\mysql5.0.51a\bin\mysqldump.exe --host=".$host." --user=".$user." --password=".$pass." ".$bases." > C:\sauvegardes/".$save_name;
$cmd_mysqldump_serveur ="C:\wamp\bin\mysql\mysql5.0.51a\bin\mysqldump.exe --host ".$host." --user ".$user." -- password= ".$bases." > T:\Maintenance/".$save_name;
//on éxécute
exec($cmd_mysqldump_local);
exec($cmd_mysqldump_serveur);
Tout se passe bien pour le premier mais pas pour le deuxième... :S La solution est peut-être dans le httpd.conf mais pas moyen de trouver où.
Auriez-vous une petite idée SVP?
Merci d'avance.
1 réponse
Je rajoute qu'en fait ce n'est pas un problème de la fonction exec() elle-même mais bien de la conf de wamp ou d'apache ou je sais pas trop quoi pcq même touch ne marche pô.
-> Je suis en local et mon script se situe sur le disque C, lorsque je veux créer un fichier avec la commande touch() j'y arrive sur le C mais pas le F... Si ça peut vous aider à m'aider :D
-> Je suis en local et mon script se situe sur le disque C, lorsque je veux créer un fichier avec la commande touch() j'y arrive sur le C mais pas le F... Si ça peut vous aider à m'aider :D
Il n'y aurait pas un probleme rien que dans la commande elle meme, "--password=".$bases
Sinon fait attention avec les antislash, si le \M etait un caractere special en php, cela pourrait poser probleme, utilise de preference un simple slash dans tous les chemins.
Le probleme vient peut etre de là... ou pas :/
Par contre après maintes lectures de forums je me suis aperçu que le problème venait du fait que je tentais d'accéder à un lecteur réseau, le T n'est pas un simple dd en fait. Ce serait donc un problème de droits par rapport au service apache...
Si quelqu'un peut m'aider je lui serait vraiment reconnaissant, je rame là!! Merci par avance de vous intéresser à mon problème
Le disque reseau fait parti d'un reseau local, ce qui n'est peut etre pas le cas du tiens
Ce n'est pas un réseau local non, j'essaye en fait de sauvegarder des données sur un serveur de l'entreprise qui fait un backup sur un autre serveur chaque soir à minuit.
Après beaucoup de recherche je me suis rendu compte que c'était un problème de droits et qu'en fait j'arrive à modifier à la main les fichiers sur le serveur car mon compte en a le droit, mais que le user apache n'a pas le droit lui de le faire.
Alors par contre comment faire pour lui autoriser là je bloque... ^^
effectivement, je comprend mieux le probleme, par contre concernant le probleme de droit, je t'avouerai que j'ai aucune experience des serveurs windows. En supposant que ça fonctionne a peu pres comme sous linux, il y aurait 2 solutions possibles:
_augmenter les droit de l'user apache, ce qui est une assez mauvaise idée, surtout coté sécurité. Apache doit etre un des compte les plus limité pour éviter les intrusions/vol de données.
_ la seconde solution serait de créer un dossier special sur le disque reseau et de l'ouvrir en ecriture à tous les users (du moins à apache minimun), et de creer les backups à l'interieur. Ceci dis, je n'ai aucune idée de la faisabilité de la chose:s