Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Per PHP script eine Batch aufrufen, lokaler Webserver xampp

uspc / 1 Antworten / Baumansicht Nickles

Nachdem ich nun Stunden probiert und gegoogelt habe, möchte ich hier mein Problem schildern.
Auf meinem Windows XP Notebook läuft ein xampp, auf dem lokalen Webserver eine MySQL Anwendung. Ich möchte die DB per Script einfach sichern auch in einem Verzeichnis unterhalb der htdocs. MySQL Dumper fällt aus, weil diese Prozedur zu bestimmten Zeiten automatisch laufen soll.
Nach ...zig Probiere-Varianten und Null Erfolg mit einer direkten PHP-Variante habe ich eine kleibe Batch-Datei geschrieben, welche die DB einwandfrei sichert (10MB).
Nun möchte ich mittels PHP diese Batch-Datei anschubsen, was aber nicht funktioniert.

Hier die backup.bat:
----------------------------
@echo off
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

FOR /F "tokens=1,2,3 delims=/: " %%a in ('Time/T') do set CTIME=%%a%%b%%c
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
echo + +
echo + Kopie der Datenbank m001 wird erstellt am %tag%-%monat%-%jahr% - %CTIME% +
echo + +
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

C:\xampp\mysql\bin\mysqldump -uroot -p db_edoxadress > C:\xampp\htdocs\backup\sichern_%jahr%-%monat%-%tag%_%CTIME%.sql
----------------------------------------------------------------

Soweit funktioniert diese ja auch mit Doppelklick. Jetzt das derzeitige PHP-Script:
-------
error_reporting(E_ALL);

$batch = 'C:\xampp\htdocs\backup\backup.bat'; //-- dort liegt die Batch-Datei
$res = exec("C:\\Windows\\system32\\cmd.exe /c \"$batch\"", $_output, $error);

echo "

\r\n";
echo "Result: $res \r\n";
echo "Error: $error \r\n";

foreach ($_output as $line)
{
echo htmlspecialchars($line)."\r\n";
}
echo "
\r\n";
----------------------------------------

Der Browser rödelt und rödelt....
Wenn ich statt der backup.bat z.B. notepad.exe eingebe, startet Notepad. Warum kann mein PHP diese Batch-Datei nicht starten ? Ich arbeite mit vollen Rechten, habe der .bat auch schon alles gegeben.
Was ist die Ursache? Denkfehler ? Danke für wertvolle Tipps! SG uspc
bei Antwort benachrichtigen
uspc Nachtrag zu: „Per PHP script eine Batch aufrufen, lokaler Webserver xampp“
Optionen

Ich habe eine Lösung gefunden, zwar über Umwege, aber kein Google-Tipp hat funktioniert, und scheinbar haben nicht wenige Leute das gleiche Problem.
Wie gesagt, für Windows XP, xampp, lokale Maschine. Backup soll auf "Knopfdruck" durchgeführt werden.

Eine MySQL Sicherung direkt aus einem PHP-Script scheint nicht zu funktionieren, ich habe alle möglichen Tipps ausprobiert, Fehlanzeige. Ursache unbekannt.
Dann kam mir die Idee, wenigstens eine Batch-Datei anzuschubsen per php, geht auch nicht. Eine funktionierende Batch-Datei hatte ich bereits (siehe oben, 1. Posting).
Heute morgen eine weitere Idee, per vbs-Datei eine bat anzuschubesen, klingt verrückt, funktioniert aber!
Ergebnis: Auf meiner Anwendunges-Website gibt es einen Button, der nennt sich backup. Damit fängt alles an. Hier nun Schritt-für-Schritt:
1. Link zur Datei sichern.php (per Button backup)
Quellcode:
system('C:\xampp\htdocs\backup\batch_start.vbs');


2. in der batch_start.vbs steht folgendes:
set wshell = CreateObject("Wscript.shell")
wshell.run "C:\xampp\htdocs\backup\d.bat"


3. in der Datei d.bat steht der Code, den ich oben gepostet habe.

Achtet auf die Dateinamen, derzeit liegt alles in einem Verzeichnis, ist nur zum Testen. Bitte anpassen!
Sieht irre aus, ist aber sehr einfach. Dieser Umweg bringt die Lösung, weil anscheinend das eine nicht darf (zB. php darf keine bat ausführen) oder das andere nicht kann - ich weiß es nicht.
Ich habe gestern Stunden mit Scripte testen verbracht, offensichtlich funktionierte das eine oder andere bei den Usern, meist liefen die Foren aber ungelöst aus.

Wenn jemand diese Lösung gebrauchen kann, bitteschön, ansonsten hat vielleicht jemand noch Tipps oder Erklärungen.
SG uspc

bei Antwort benachrichtigen