1

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

Joseph
  • 1,988
  • 14
  • 21
  • When you exec an `ls -al` in the terminals of both servers, do you get colourized output? If yes, can you try `passthru('ls -al');` with PHP on both servers? Do you still have the same output effects? – hek2mgl May 18 '15 at 22:25
  • When in the terminals, everything is the same. I will run the passthru with that and get back to you in a moment. – Joseph May 18 '15 at 22:29
  • When running the code `passthru('ls -al')`, the output is not colorized on either server. – Joseph May 18 '15 at 22:33
  • Then it must be a setting for the `wp` application. Something like `force_colors`.. Did you reviewed the configuration files of `wp` ? – hek2mgl May 18 '15 at 22:38
  • Oh, found it. Check my answer. – hek2mgl May 18 '15 at 22:42

1 Answers1

0

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.

grappler
  • 527
  • 5
  • 17
hek2mgl
  • 152,036
  • 28
  • 249
  • 266
  • So the question is, why would I need to set that differently on the servers? What is it that causes the same phar to act differently on the two servers? – Joseph May 19 '15 at 01:04
  • By the way, I had already looked in the config for wp to verify it was not already being set there. – Joseph May 19 '15 at 01:05
  • I set it to auto in the config, and it is now working as it should. Not sure why it suddenly decided to no longer use that as the default on only the one server, but there it is. Thanks. – Joseph May 20 '15 at 16:14
  • 1
    How do we do this on a non wordpress application? I notice general PHP `passthru()` has the same issue – Jonathan Apr 24 '18 at 23:50
  • Can you open a question about that? Hard to say without seeing the code. I can only say that there is no general problem with `passthru` – hek2mgl Apr 25 '18 at 04:47
  • I agree with @Jonathan there seems to be a problem in general with passthru() not passing the colourisation thru. – Studocwho Jun 20 '23 at 00:36