Mysqldump aus php unter linux ausführen

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:

<?php $cmd = sprintf("/usr/bin/mysqldump -h localhost -u root --password='12345' freunde > backup/dump.sql"); $rs = system($cmd); if ($rs) echo "Daten erfolgreich gesichert"; else echo "Bei der Sicherung ist ein Fehler aufgetreten"; ?\> Habt ihr Tipps???? Danke euch und wünsche einen schönen Abend Otmar

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:

<?php system("./home/otmar/html/kontakte/backup/dumperstellen.sh",$rs);
?\> (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