PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Probleme mit System() und bat datei (https://www.php-resource.de/forum/php-developer-forum/105331-probleme-mit-system-und-bat-datei.html)

Soldize 01-11-2015 20:11

Probleme mit System() und bat datei
 
Hey Leute,

habe ein Problem,

Ich möchte mittles Button im Forum eine Batch Datei ausführen.

PHP-Code:

<?php
if(isset($_POST['submit']))
{
system("cmd /c c:\\test.bat");
}
?>

leider passiert nichts wenn ich den Button anklicke.

wenn ich es aber so schreibe

PHP-Code:

<?php
if(isset($_POST['submit']))
{
system('start "c:\\test.bat"');
}
?>

startet er zwar cmd am Webserver aber die Batch datei wird nicht abgearbeitet. Dann irgendwann kommt auf der Forum seite ein interner server fehler 500.


Was übersehe ich da? Ich denke das der erste Befehl richtig ist aber warum tut sich dann nichts?

LG Chris:danke:

fireweasel 02-11-2015 15:50

Zitat:

Zitat von Soldize (Beitrag 671849)
PHP-Code:

<?php
if(isset($_POST['submit']))
{
system("cmd /c c:\\test.bat");
}
?>

leider passiert nichts wenn ich den Button anklicke.

Bist du dir da ganz sicher? Möglicherweise kehrt system() auch nicht zurück, weil der Kommandozeileninterpreter nicht beendet wird.

Zitat:

wenn ich es aber so schreibe

PHP-Code:

<?php
if(isset($_POST['submit']))
{
system('start "c:\\test.bat"');
}
?>

startet er zwar cmd am Webserver aber die Batch datei wird nicht abgearbeitet. Dann irgendwann kommt auf der Forum seite ein interner server fehler 500.
Möglicherweise ist der Pfad zur Batch-Datei falsch, eventuell enthält sie Fehler usw. Du kannst system() ein zweites Argument übergeben, dort findest du nach Ausführung den Wert FALSE, falls es Fehler gab. Ansonsten kann auch die Analyse des Rückgabewertes erhellendes bringen. Was sagt ein var_dump(system('start "c:\test.bat"')); ...?

Soldize 02-11-2015 16:57

Hallo

Danke für deine Antwort?

Wie beende ich den die command Zeile? Hab ehrlich gesagt mit dem System noch nie gearbeitet. Der Pfad stimmt weil ihm taskmanager geht die cmd ja auf nur arbeitet sie die batch nicht ab

fireweasel 03-11-2015 12:01

Zitat:

Zitat von Soldize (Beitrag 671854)
Wie beende ich den die command Zeile?

Direkt von PHP aus gar nicht. Wenn du "start" benutzt, um deine Batch-Datei auszuführen, wird immer ein Kommandozeilenfenster offen bleiben, das du von Hand schließen must. Erst dann kehrt system() ins PHP-Script zurück. Deswegen bekommst du damit nach einer gewissen Zeit eine Fehlermeldung.

Mit "cmd /C ..." kehrt system() direkt zurück. Du kannst auf diesem Weg aber nicht mehr vernünftig auswerten, was während der Ausführung der Batch-Datei geschah: eventuell auftretende Fehler beispielsweise. Es ist auch unnötig, diesen Umweg zu gehen, denn system() startet sowieso einen Kommandozeileninterpreter. Es geht auch ohne "cmd":
PHP-Code:

$last_line system('C:\test.bat'$return);
var_dump($return); // int(0) im Erfolgsfall
var_dump($last_line); // FALSE im Fehlerfall 

Wenn jetzt das Script "hängt", liegts an den Innereien der Batch-Datei. Wenn die korrekt ist, kehrt irgendeines der darin aufgerufenen Programme nicht zurück.

Soldize 03-11-2015 18:31

Die php gibt folgendes zurück: int(1) string(0) ""

hmmm in den diensten geht keine cmd auf nichts. die bat funktioniert aber wenn ich sie so im remotedesktop doppelklicke.

Soldize 03-11-2015 22:30

Also es liegt definitiv an irgendwelchen einstellungen in der php.ini. leider startet weder eine cmd noch die batch datei. Ich denke es kann nur irgend eine einstellung/rechte nicht passen.

LG


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:23 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG