Hallo,
ich will einen mysqldump automatisch über ein Webinterface durchführen.
Der Testrechner läuft unter Windows. Der produktive Server unter Linux.
Dazu wollte ich folgenden Code verwenden:
Code:
$befehl='c:/mysql/bin/mysqldump.exe -u'.$MySQL_User.' -p'.$MySQL_Passw.' -h localhost fws > '.$sicpfad.'/fwsdump.sql';
echo $befehl."
";
system($befehl,$fp1);
if ($fp1 != 0)
{
echo "Datenbank konnte nicht exportiert werden $fp1";
}
Auf dem Windows-System wird die Datei fwsdump.sql erstellt, aber mit 0 Bytes. Auf dem Linux-Server erstellt er keine Datei.
Wenn ich den kompletten Befehl den ich per echo ausgegeben habe mittels Cut&Paste in ein Befehlszeilenfenster reinkopiere, dann wird der Dump problemlos erstellt. Sowohl unter Windows, als auch über PuTTY-Fenster direkt auf dem Server.
Womit der mysqldump wohl korrekt ist.
Was mache ich denn hier falsch ? Alle Hinweise die ich im Internet gefunden haben zeigen, dass ich den Befehl einfach nur mit system() oder exec() ausführen müsste.
Nachtrag:
Im error_log des Apache habe ich etwas merkwürdiges gefunden:
Zitat:
|
sh: line 1: /home/www/empty/mysqldump: Permission denied
|
Ich verstehe aber nicht, warum er den mysqldump im Verzeichnis /home/www/empty sucht. Ich geb ihm den kompletten Pfad mit /usr/bin/mysqldump. Und das Verzeichnis in dem die Website liegt, die das PHP-Script startet ist /home/www/web1
Das ganze läuft auf einem 1&1 Rootserver, aber wie gesagt, das gleiche Problem habe ich auch auf dem Windows-Testserver. Hier sagt er übrigens:
Zitat:
Der Befehl "mysqldump.exe" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
|
Auch hier habe ich den vollständigen Pfad angegeben:
Code:
c:/mysql/bin/mysqldump.exe -u".$MySQL_User." -p".$MySQL_Passw." -h localhost fws > ".$sicpfad."/fwsdump.sql
Bye,
Markus