Mam polecenie, na przykład "git diff", które wyprowadza kolorowany wynik po uruchomieniu go z terminala.Wykonaj kolorowane polecenie ze skryptu php.
Teraz chcę wywołać to polecenie ze skryptu php CLI i wyświetlić w konsoli kolorowany wynik. Próbowałem z exec(), system(), passthru(), ale w każdym przypadku dane wyjściowe zostały przekonwertowane na zwykły czarno-biały tekst.
Czy istnieje sposób na zachowanie koloru standardowego wyniku? Jeśli nie, czy ktoś wie, dlaczego ta informacja się zagubiła?
Po prostu pomysł: jest to prawdopodobnie związane ze zmienną środowiskową. Szybki test może dostarczyć wskazówek: 'env> env_a.out && php -r 'system (" env ");' > env_b.out && diff env_a.out env_b.out' – gamen
Próbuję twojego testu, kiedy oba pliki env zostaną zmienione, różnica jest tylko taka: 'SHLVL = 1 przeciwko SHLVL = 2' – jeanmonod
To podobne? Jestem zaskoczony, że jestem uczciwy. Być może podanie dodatkowych szczegółów na temat twojego środowiska byłoby pomocne w twoim pytaniu, a także uproszczenie problemu, próbując najpierw uzyskać kolor wyjściowy ('php -r 'printf ("% c [32mGreen% c [0m \ n ", 27 , 27); ''), a nie z wywoływania polecenia podobnego do git. – gamen