Systembefehl, was mache ich falsch?

splasch

Erfahrenes Mitglied
Kennt sich jemand mit system Befehl aus?

Warum wird die Datei Lokal nicht erzeugt ist da ein Fehler im System Befehl drin ?
PHP:
system("/usr/bin/mysqldump -uUser -pPassword -h localhost buchhaltung > ".dirname(__FILE__)."\dump8.sql", $fp); 
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";

Wenn ich das ganze Lokal im CMD(Dosmodus) so eingebe:

mysqldump -uUser -pPassword -h localhost buchhaltung -r D:\xampp\htdocs\Buchhaltung\Dump10.sql

funktioniert es.

Was ist an dem System befehl falsch. Hab auch schon mit -r im Systembefehl versuch ohne erfolg.

Mfg Splasch
 
/usr/bin/mysqldump klingt sehr nach Unix-System...
D:\xampp\htdocs\Buchhaltung\Dump10.sql klingt sehr nach Windows-System...

Hast du es schonmal ohne das /usr/bin/ probiert?
 
Ich habs mal schon ohne den usr probiert da hat er dann kurz das Dosfenster geöffnet.Lokal läuft das ganze auf einen Windows system die mysqldump datei ist unter dem Verzeichnis bin zu finden also unter D:\xammp\mysql\bin

Mfg Splasch
 
Windows beherrscht keine Unix-Pfadangaben. Bis auf diese Interferenz sehe ich kein Problem... Probier mal bitte
PHP:
<?php
$mysqldump_path = (substr(PHP_OS, 0, 2) == 'WIN')
                ? 'D:\xammp\mysql\bin\mysqldump'
                : '/usr/bin/mysqldump';

system("{$mysqldump_path} -uUser -pPassword -h localhost buchhaltung > "
       . dirname(__FILE__)
       . "/dump8.sql",
       $fp); 

echo   ($fp==0)
     ? 'Daten exportiert'
     : 'Es ist ein Fehler aufgetreten';

Was das bewirkt, ist eine einfache Unterscheidung, ob du lokal arbeitest unter Windows (PHP_OS == 'WINNT' oä) oder auf dem Server unter Linux.

Und ein kurzer Nachtrag: "\dump8.sql"... Muss der Backslash escaped werden, also "\\dump8.sql"? Oder verirre ich mich da gerade ein wenig im Grundwissen? :suspekt:
 
Hab mal \ auf / umgedreht und siehe da es kommt keine Fehlermeldung mehr. Aber die Ziel datei ist noch immer nicht auf der Hdd zu finden

PHP:
system("D:\xampp\mysql\bin\mysqldump -uUser -pPass -h localhost buchhaltung -r D:\xampp\htdocs\dump8.sql", $fp); 
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";

Mfg Splasch
 
Für diese Funktion muss am Server "exec" bzw. "shell_exec" aktiviert sein.
 
Zuletzt bearbeitet:
Hallo!

fehler: substr(PHP_OS, 0, 2) ergibt "wi" und nicht wie erwünscht "win"
Gut erkannt. ;)
Weil der 3. Parameter von substr() nicht das zu suchende Ende angibt, sondern die positiv/negativ zu berücksichtigende Länge.
Zu deutsch: fange beim 1. Zeichen (W) an und gebe zwei Zeichen (WI) zurück.
Richtig müsste es also substr(PHP_OS, 0, 3) heissen.
Oder alternativ substr(PHP_OS, 0, -2) --> fange beim 1. Zeichen (W) an und lasse die letzten zwei Zeichen (WINNT - NT = WIN) weg.

Ich denke da ist maeTimmae nur ein Flüchtigkeitsfehler unterlaufen..... man testet ja nicht unbedingt jeden kleinen Codeschnippsel. ;)

Gruss Dr Dau
 
:D Ihr Grabschänder.. Zumindest auf n Ostermonatg sollte man Euch den Spaten wegnehmen :D

[Offtopic aus] mfg chmee
 
Zurück