php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.08.2004, 23:43   #1 (permalink)
Gast
 
Beiträge: n/a
Standard Ausführen von mysqldump über system oder exec

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
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.08.2004, 10:23   #2 (permalink)
Gast
 
Beiträge: n/a
Standard Erster Teilerfolg

Hallo,

ich hab an dem Windowsrechner mit safe_mode=off erreicht, dass es nun funktioniert.
Ich wollte zwar den safe_mode nicht abschalten aber die Sache mit dem safe_mode_exec_dir funktionierte leider nicht.
Ich habe dort das Verzeichnis c:/mysql/bin angegeben. Trotzdem wollte er die mysqldump.exe nicht ausführen.
Mit deaktiviertem safe_mode funktioniert es nun.

Auf dem Linux-Server hilft leider auch das nichts. Das error_log sagt weiterhin
Zitat:
sh: line 1: /home/www/empty/mysqldump: Permission denied
Wieso er auf diesen Pfad kommt, kann ich mir nicht erklären. Hat hier jemand einen Tipp für mich ?

system() gibt übrigens den Wert 126 zurück. Gibt es hier irgendeine Tabelle bei der man nachlesen kann, was ihm weh tut ? Wobei ich vermute, dass das auch nur dem entspricht was im error_log steht.

Hier nochmal der aktuelle Code:
Code:
/*      $sicpfad=$MySQL_SiCoPfad.date(YmdHis);*/
        $sicpfad=$MySQL_SiCoPfad."back";
        if (!is_dir($sicpfad))
        {
                mkdir($sicpfad, 0777);
        }
        else
        {
                echo "Verzeichnis existiert schon !
";
        }
        // Datenbank Backup erstellen

/*      $befehl='/usr/bin/mysqldump -A > '.$sicpfad.'/fwsdump.sql'; */
        $befehl='/usr/bin/mysqldump  -u'.$MySQL_User.' -p'.$MySQL_Passw.' -h localhost fws > '.$sicpfad.'/fwsdump.sql';
     echo "Befehl: ".$befehl."
";
     system($befehl,$fp1);
     if ($fp1 != 0)
     {
          echo "Datenbank konnte nicht exportiert werden $fp1";
     }
Das Verzeichnis wird dann korrekt angelegt:
Zitat:
drwxr-xr-x 2 wwwrun www 4096 Aug 24 09:44 back
Mit welchen Ausführungsrechten führt PHP externe Programme aus ? Liegt es vielleicht daran ?

Vielen Dank,
Markus Haupt
  Mit Zitat antworten
Alt 24.08.2004, 10:39   #3 (permalink)
Gast
 
Beiträge: n/a
Standard Tomaten auf den Augen ... sorry

Mea culpa ... ich bin mit Blindheit geschlagen.
Man sollte phpinfo doch weiter herunterlesen.

Der Master-Wert von safe_mode ist off und auch das safe_mode_exec_dir ist dort /usr/bin.
Der lokale Wert beinhaltet aber in safe_mode_exec_dir den Eintrag /home/www/empty.

Jetzt die wahrscheinlich saublöde Frage, wie ändere ich den lokalen Wert, oder bzw. reicht es wenn ich einen SymLink von /home/www/empty auf /usr/bin/mysqldump einstelle ?
Also letzteres teste ich mal aus, für ersteres vielleicht erleuchtet mich jemand.


Danke,
Markus
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie Lizenz System umsetzen? ghost120 PHP-Fortgeschrittene 5 20.07.2009 13:04
system() flush und Safari webbi PHP-Fortgeschrittene 6 07.07.2008 21:30
exec(), Programm läuft nur als Task Superfunk2000 Server, Hosting und Workstations 1 05.07.2008 09:14
Exec() im IIS funktioniert nicht Superfunk2000 PHP Tipps 2008 24 04.07.2008 15:12
ComputerVerwaltung / System / Ereignisanzeige dh1sbg PHP-Fortgeschrittene 3 17.11.2006 01:42
mysqldump ohne exec sponer Datenbanken 5 27.07.2006 15:22
system() - Befehle werden einfach ignoriert sad PHP-Fortgeschrittene 9 18.04.2006 18:12
Exec(), system() ~ cmd-Befehl auf Windows mit Sonderzeichen PHP-Fortgeschrittene 0 10.04.2006 14:02
Word mit exec oder system starten (apple tiger) PHP Tipps 2007 0 26.12.2005 13:41
exec() Funktion PHP-Fortgeschrittene 1 22.08.2005 19:33
29.07.05: System Administrator Appreciation Day!! Off-Topic Diskussionen 2 25.07.2005 09:15
unzip per exec() funktioniert leider nicht PHP-Fortgeschrittene 7 27.06.2005 15:33
Chat System Chat System Beitragsarchiv 3 21.06.2005 17:07
MySQLDUMP mit exec unter Windows (localhost) PHP Tipps 2004 17 13.10.2004 20:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql_dump php, php system mysqldump, mysqldumper starten, mysqldump putty, mysqldump ausführen, mysqldump pfad, mysqldump.exe, php pfad falsch! php konnte nicht gefunden werden! (oder exec nicht erlaubt)!, mysqldump, mysql dump ausführen, system(\/usr/bin/mysqldump, sh: /mysqldump: datei oder verzeichnis nicht gefunden, mysqldump befehl, 1&1 mysqldump exec, mysqldump automatisieren windows, putty mysqldump, mysqldump php windows, php system mysqldump linux, system mysql dump, system(\mysqldump

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.