Tôi có lệnh, ví dụ 'git diff' xuất kết quả được tô màu khi tôi chạy nó từ thiết bị đầu cuối.Thực hiện lệnh được tô màu từ tập lệnh php
Bây giờ, tôi muốn gọi lệnh đó từ tập lệnh php CLI và hiển thị trong bảng điều khiển kết quả được tô màu. Tôi đã thử với exec(), system(), passthru() nhưng trong mọi trường hợp đầu ra đã được chuyển đổi sang văn bản màu đen và trắng đơn giản.
Có cách nào để bảo toàn màu của kết quả chuẩn không? Nếu không, ai đó có biết tại sao thông tin này bị mất không?
Chỉ cần một ý tưởng: nó có thể liên quan đến biến môi trường. Một bài kiểm tra nhanh có thể cung cấp manh mối: 'env> env_a.out && php -r 'system (" env ");' > env_b.out && diff env_a.out env_b.out' – gamen
Tôi thử thử nghiệm của bạn, một khi cả hai tập tin env sắp xếp lại, sự khác biệt chỉ như thế này: 'SHLVL = 1 so với SHLVL = 2' – jeanmonod
Điều đó tương tự? Tôi rất ngạc nhiên khi thành thật. Có lẽ cung cấp thêm chi tiết về môi trường của bạn sẽ hữu ích trong câu hỏi của bạn, cũng như đơn giản hóa vấn đề bằng cách cố gắng tự tạo màu đầu tiên ('php -r 'printf ("% c [32mGreen% c [0m \ n ", 27 , 27); '') thay vì gọi lệnh như git. – gamen