exec(), Prozess schließt sich nicht
Matthias
- php
Hallo miteinander!
Bin gerade dabei ein kleines Script zu schreiben, das mittels catdoc den Klartext aus einem .doc File ausliest.
Das ganze funktioniert auf meinem Windows XP rechner eigentlich ganz gut:
exec("catdoc.exe datei.doc");
Nicht genau so, aber ca. in der Art. Die Pfade unterscheiden sich etwas.
Nun habe ich das ganze auf einen Windows 2003 Server gespielt. Dort läuft ein Apache 2 mit PHP 5 (gleich wie auf meinem XP Rechner). Allerdings funktioniert das ganze dort nicht so toll. Es öffnet sich eine cmd.exe (sichtbar im Taskmanager) und schließt sich nicht mehr > PHP läuft in einen Timeout und das wars.
Das ganze passiert auch, wenn ich einen simplen Befehl ausführe:
exec("echo test");
Die cmd.exe schließt sich einfach nicht mehr, sondern läuft im Idle weiter.
Hat jemand vielleicht eine Idee, an was das liegen kann?
Schöne Grüße und Danke!
Matthias
Moin!
Die cmd.exe schließt sich einfach nicht mehr, sondern läuft im Idle weiter.
Hm. Möglicherweise stellt das Programm eine Rückfrage... ("Wollen Sie das wirklich...?") und wartet auf eine Antwort.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hm. Möglicherweise stellt das Programm eine Rückfrage... ("Wollen Sie das wirklich...?") und wartet auf eine Antwort.
Kann eigentlich nicht sein. Wenn ich das Programm nämlich "von Hand" in der Eingabeaufforderung ausführe, dann ist es innerhalb von ca. 0,1 Millisekunden fertig ;)
Weiters stellt das "Programm" "echo test" definitiv keine Rückfrage.
Moin!
Weiters stellt das "Programm" "echo test" definitiv keine Rückfrage.
Du hast dieses im Kontext des Benutzers ausgeführt, unter dem Dein Webserver es versucht? Möglicherweise mag nämlich schon cmd.exe nicht starten...
Was passiert bei der Verwendung von Backticks?
<?php
print `echo '<h1>Gehts?</h1>'`;
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Du hast dieses im Kontext des Benutzers ausgeführt, unter dem Dein Webserver es versucht? Möglicherweise mag nämlich schon cmd.exe nicht starten...
Der Webserver läuft als SYSTEM, cmd.exe startet auch (Task-Manager).
Was passiert bei der Verwendung von Backticks?
<?php
echo '<h1>Gehts?</h1>'
;
?>
Das schöne Beispiel lässt den Server in ein Timeout laufen. Was bedeutet das?
Moin!
Was passiert bei der Verwendung von Backticks?
<?php
echo '<h1>Gehts?</h1>'
;
?>
>
> Das schöne Beispiel lässt den Server in ein Timeout laufen. Was bedeutet das?
Möglicherweise das die cmd.exe auch hier irgend etwas fragt und natürlich (mangels realer Shell) keine Antwort bekommt. Benutzt Du einen Apache als Webserver oder den IIS? Möglicherweise musst Du irgendwelche Sicherheitseinstellungen anpassen.
> Der Webserver läuft als SYSTEM, cmd.exe startet auch (Task-Manager).
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: [Schulungen](http://seminar-training-schulung.de/), [Seminare](http://seminar-training-schulung.de/), [Training](http://seminar-training-schulung.de/), [Development](http://webdesign.fastix.de/)
Möglicherweise das die cmd.exe auch hier irgend etwas fragt und natürlich (mangels realer Shell) keine Antwort bekommt. Benutzt Du einen Apache als Webserver oder den IIS? Möglicherweise musst Du irgendwelche Sicherheitseinstellungen anpassen.
Hmmm... Ich verwende einen Apache 2... Einstellungen konnte ich keine finden, werde es aber erneut probieren.
Das ganze verhält sich doch etwas anders, habe da nicht genug aufgepasst. Das Script läuft nicht wirklich in einen Timeout, es läuft ewig weiter (wird die Prozess-Ausführ-Zeit nicht im Timeout eingerechnet?). Erst wenn ich den Prozess kille, dann erscheint die Ausgabe, dass die execution time von 2 Sekunden (von mir absichtlich so gesetzt testweise - höher geht auch nicht besser) erreicht ist. Das ganze ist dann aber bereits über eine Minute am laufen. Von selbst läuft das Script also nie in den Timeout, sondern bleibt in einer Art Idle.
Problem gelöst... Apache Dienst neu gestartet. Keine Ahnung warum, an der Config wurde nichts geändert.