Hallo
Ich versuche mit einem normalen EXEC-Befehl ein File, welches auf meinem UNIX-Server liegt, wie folgt auszugeben:
echo exec("more test.html");
Das funktioniert auch wunderbar, solange dieses File existiert.
Wenn das File aber nicht mehr existiert, sollte das Script doch eine Fehlermeldung zurückgeben? Die Ausgabe ist allerdings leer.
warum testest Du nicht vorher auf Existenz der Datei?
Wenn ich genau diesen Befehl direkt in der Shell ausführe erhalte ich folgende Fehlermeldung: "test.html: No such file or directory"
Wieso bekomme ich diese Fehlermeldung nicht von meinem PHP-Script?
weil exec offensichtlich nur die Ausgabe auf die Standardausgabe zurückliefert, nicht aber die Ausgabe auf den Fehlerkanal STDERR. Fehlermeldungen werden jedoch nach STDERR und nicht STDOUT ausgegeben. Du müsstest bei Deinem Ansatz STDERR entsprechend umleiten, siehe Benutzeranmerkungen zu exec().
Grundsätzlich empfehle ich Dir jedoch vorheriges Prüfen auf Existenz der Datei, was auch in der Shell erfolgen könnte. Warum gehst Du so kompliziert vor, nur um den Inhalt einer Datei auszugeben? Warum more und nicht cat? Warum überhaupt Shellkommandos?
Freundliche Grüße
Vinzenz