Problème exec

Fermé
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 - 5 mai 2008 à 15:55
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 - 6 mai 2008 à 15:14
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.

1 réponse

Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46
5 mai 2008 à 15:59
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
0
Kcazer Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 août 2008 21
5 mai 2008 à 17:04
Salut,

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 :/
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46 > Kcazer Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 août 2008
5 mai 2008 à 17:16
Merci d'avoir répondu Kcazer. En fait ce n'est pas un problème de syntaxe car en remplaçant le T par le C la commande fonctionne très bien, d'ailleurs la seconde n'est qu'un simple copier coller de la première qui marche.
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
0
Kcazer Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 août 2008 21 > Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009
5 mai 2008 à 18:12
Je viens de tester quelques touch('test'); sur divers disques, y compris un disque reseau. Je n'ai eu aucun probleme, chacun des fichier a été correctement crée, que j'execute le fichier depuis une ligne de commande ou via apache. Etrange que ça ne fonctionne pas chez toi.
Le disque reseau fait parti d'un reseau local, ce qui n'est peut etre pas le cas du tiens
0
Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009 46 > Kcazer Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 août 2008
6 mai 2008 à 11:39
Re Kcazer! Excuse moi pour le retard je n'ai plus eu accès au PC...
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... ^^
0
Kcazer Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 août 2008 21 > Sh@tter Messages postés 157 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 26 octobre 2009
6 mai 2008 à 13:40
Re aussi,
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
0