mirror of
https://github.com/phpbb/phpbb.git
synced 2025-03-14 04:30:29 +01:00
[ticket/10716] Collect standard error from executed php process.
php executes everything via a shell. The standard error of this top level shell is not captured by exec/shell_exec/popen/etc. and there is no way to capture it. proc_open might work but it is a nightmare to use and without multiplexing reads from standard error and standard output it can deadlock. Thus the solution in this commit. Put the command into a subshell and redirect standard error to standard output for the subshell. PHPBB3-10716
This commit is contained in:
parent
8ea52b5619
commit
fb261e19ff
@ -15,9 +15,10 @@ class phpbb_lint_test extends phpbb_test_case
|
||||
{
|
||||
$output = array();
|
||||
$status = 1;
|
||||
exec('php -v', $output, $status);
|
||||
exec('(php -v) 2>&1', $output, $status);
|
||||
if ($status)
|
||||
{
|
||||
$output = implode("\n", $output);
|
||||
self::markTestSkipped("php is not in PATH or broken: $output");
|
||||
}
|
||||
|
||||
@ -61,7 +62,7 @@ class phpbb_lint_test extends phpbb_test_case
|
||||
else if (substr($filename, strlen($filename)-4) == '.php')
|
||||
{
|
||||
// assume php binary is called php and it is in PATH
|
||||
$cmd = 'php -l ' . escapeshellarg($path);
|
||||
$cmd = '(php -l ' . escapeshellarg($path) . ') 2>&1';
|
||||
$output = array();
|
||||
$status = 1;
|
||||
exec($cmd, $output, $status);
|
||||
|
Loading…
x
Reference in New Issue
Block a user