hallo,
ich aus einem php-script einen dump einer MySQL-Db erstellen. Als Betriebssystem ist Linux (Ubuntu) installiert.
Wenn ich den Befehl auf der Kommandozeile ausführe, klappt es einwandfrei. Der Ordner hat auch die Rechte 0777.
Also im Script steht:
hast du dir schon mal $rs ausgeben lassen?
lass dir mal das komplette ergebnis liefern und aufgeben:
system($cmd, $rs);
echo $rs;
Gruß
Stef
Hallo,
$cmd = sprintf("/usr/bin/mysqldump -h localhost -u root
–password=‚12345‘ freunde > backup/dump.sql");
Ich würde hier sicherheitshalber den kompletten Pfad zu dem Backup-Verzeichnis eingeben.
Gruß
R.
Den Pfad habe ich schon eingegeben. Mit und ohne Anführungszeichen.
Das war leider erfolglos.
Obwohl alles auf der Kommandozeile (Ubuntu) funktioniert hat.
Danke Otmar
Habe folgendes probiert:
$cmd = sprintf("/usr/bin/mysqldump --opt -h localhost -u root --password=’!m3stb!’ freunde > /home/otmar/html/kontakte/backup/dump.sql");
echo "cmd = „.$path.$cmd.“
";
$rs = system($cmd);
echo "rs = „.$rs.“
";
system($cmd, $rs);
echo "rs1 = „.$rs1.“
";
Beide $rs sind leer!
LG Otmar
Achja sorry, du leitest die Ausgabe ja in eine Datei um. Ist dein Problem, dass die Datei nicht angelegt wird? Wenn ja, lass die Umleitung mal weg. Ansonsten kannst du ja einfach mal Nachschauen was in der Datei steht.
Btw. du übergibst beim zweiten system()-Aufruf die Variable $rs, gibst aber $rs1 aus.
Mögliche Ursache könnte auch sein, dass du die php.ini falsch konfiguriert hast. Du musst entweder „safe_mode“ auf Off stellen oder deinem „safe_mode_exec_dir“ dein mysql/bin Pfad hinzufügen.
Gruß Stefan
Hallo,
sorry das ich mich erst jetzt melde, aber…
Also in meiner php.ini steht nun:
safe_mode = Off
safe_mode_exec_dir = „/usr/bin/“
Und noch immer im php-Script:
/usr/bin/mysqldump --opt -h localhost -u ich --password=‚bla‘ db > /home/otmar/html/kontakte/backup/dump.sql
Wie gesagt: gebe ich den Befehl auf der Konsole so ein, wird er einwandfrei ausgeführt.
Danke euch für weitere Tipps!!
MfG Otmar
Dann habe ich auch ein Script geschrieben:
#!/bin/bash
/usr/bin/mysqldump --opt -h localhost -u ich --password=‚plass‘ freunde > /home/ich/backup/dump.sql
welche direkt auf der Kommandozeile mit
./dumperstellen.sh
ebenfalls einwandfrei läuft.
Aber aus einer php Datei heraus:
?\> (habe auch mal den punkt am Anfang weggelassen....) klappt es wiederum nicht.
Hallo,
für die Umleitung der Ausgabe braucht es meiner meiner Meinung nach eine Shell, hast du shell_exec oder den Backtick-Operator versucht ? Dazu muss der Benutzer, der das ausführt (wwwrun, nobody, etc.) aber auch eine gültige Shell haben.
Geht es ohne die Umleitung, bekommst du dann den Dump im Browser ?
Alex
Malzeit!!
Die Lösung lag doch tatsächlich in den Berechtigungen!!! Obwohl ich dachte dem Ordner die vollen Berechtigungen für alle gegeben zu haben…fehlten sie wohl darüber…
Sorry!!!
Danke euch allen!!
Und wünsche euch noch einen tollen Sonntag
Otmar
GELÖST
Malzeit!!
Die Lösung lag doch tatsächlich in den Berechtigungen!!! Obwohl ich dachte dem Ordner die vollen Berechtigungen für alle gegeben zu haben…fehlten sie wohl darüber…
Sorry!!!
Danke euch allen!!
Und wünsche euch noch einen tollen Sonntag
Otmar