Search code examples
phpbashpassthru

PHP passthru with colorized output


I have a script that runs other scripts based either on a specified schedule or on demand depending on the command. This allows mundane and time consuming tasks to be managed in a central location as well as simplifying the management in general. This setup exists on two servers with a (mostly) identical setup.

One of the subscripts that is run uses PHP's passthru() function. The results are stored in a database for later viewing.

The code running passthru() is:

$result = []; passthru(/usr/local/bin/wp plugin delete ' . $plugin . ' --path=' . $path, $result);

When run from the command line in putty, the output is similar to:

Success: Deleted 'hello' plugin.

On both servers, Success: is green. However, when run on server 1 via the task, the colors are stripped out. When run on server 2, the ANSI color codes remain and are recorded as follows:

[32;1mSuccess:[0m Deleted 'hello' plugin.

I need to remove the color codes from the second result, but I can't figure out what setting in CentOS (or php.ini) to look at for this. There is something different between the two servers, but I am unable to figure out what.

PHP version: 5.6.8 CentOS version: 6.6


Solution

  • As we figured out in comments the problem lays in the config file of wp-cli. Change color:true to color:auto on the second server.