shell_exec ignoriert Bash-Farbcodes?

  • Guten Tag alle zusammen, ich bastel gerade an einer Webübersicht für mein Backup-Verzeichnis. Da ich die Farbausgabe von ls ganz praktisch finde, wollte ich die ausgegeben Farben mit anzeigen.


    Ich benutze shell_exec, um ls -lAh --color=always <pfad> auszuführen. Wenn ich den Befehl manuell in der Bash eingebe, erhalte ich farbigen Output. Mit einer Pipe zu ansi2html (Link) werden die Farbcodes zu HTML/CSS umgewandelt. Dies funktioniert jedoch nur, wenn ich den Befehl ls ... | ansi2html manuell ausführe. Sobald ich den Befehl per shell_exec ausführe, werden überhaupt keine Farbcodes generiert. Woran könnte das liegen?


    MfG

    ChestSort: Automatische Kistensortierung in Minecraft - www.chestsort.de


    www.raucher-werden.de - www.serioese-alternative.de - www.jeff-media.de

  • Bei meinem Test (Webhosting / Expert Light) waren die Farbcodes zumindestens vorhanden…

    PHP
    1. shell_exec('ls -lisah --color=always')

    Bildschirmfoto_2018-02-06_13-59-31.png


    Ist das bei Dir auch der Fall, oder fehlen die komplett? (Nur sichtbar in der Quelltextansicht vom Browser!)


    Nur so kann man eingrenzen, bei welchem Befehl der Fehler zu suchen ist.

  • Hay,


    optimistisch geraten könnte in dem Fall auch sein: der Nutzer, unter dem PHP läuft, hat eventuell kein farbfähiges Terminal.


    Vielleicht mal "TERM=xterm;ls -lAh --color=always|ansi2html" versuchen. Außerdem schau Dir mal auf php.net an, dass shell_exec diverse Schwierigkeiten mit der Standardausgabe macht, so dass Du u.U. die Ausgabe erst mit tee in eine temporäre Datei "abzweigst" und diese anschließend einliest und ausgibst.


    CU, Peter

  • Die Farbcodes fehlten komplett im Quelltext.


    Danke, das war die Lösung! :) Ich hätte gedacht dass color=always ausreichen müsste... Dann ist das "always" wohl etwas missverständlich.

    ChestSort: Automatische Kistensortierung in Minecraft - www.chestsort.de


    www.raucher-werden.de - www.serioese-alternative.de - www.jeff-media.de