Re: CLI script & exec() - how to control what gets dumped on the screen.
| From: | Stut | Date: | Tue, 28 Nov 2006 11:40:00 +0000 |
| Subject: | Re: CLI script & exec() - how to control what gets dumped on the screen. | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-245219@lists.php.net to get a copy of this message | ||
Jochem Maas wrote:
I have been trying to figure out how to use exec to run some commandline scripts (some perl scripts & mysql in this case) WITH the output of the commands run via exec being shown on the screen. neither of these examples have the desired effect: $output = array(); $exit = 0; exec('apache2ctl graceful', $output, $exit); $output = array(); $exit = 0; @exec('apache2ctl graceful', $output, $exit); please someone tell me there is a decent way to do this (something to do with STD input/output redirection or something?) and that I'm not left with trying something like: ob_start(); $output = array(); $exit1 = $exit2 = 0; @exec('apache2ctl graceful', $output, $exit1); ob_end_clean(); ... of which I don't even know if it would work. anyone care to share their clue?Chances are that the output is being sent to stderr instead of stdout. You need to redirect stderr output to stdout in the command... exec('apache2ctl graceful 2>&1', $output, $exit); Also, in my experience it's better to provide the full path to anything you shell out to from PHP, especially if it's going to be executed from a web request. -Stut