php: захват вывода команды

CSS, который я вставил здесь, был неправильным, я редактировал неправильный файл DOH!

Исходный CSS не работает

background-image: linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);

CSS, который исправил проблему

background-image: linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);

Проблема прозрачности не является цветом, она черная с 0 альфой, настройка на конкретную белизна с 0 альфой устраняет проблему. (thanks @carisenda)

Это все еще указывает на несоответствия в том, как браузеры имеют дело с альфа-прозрачностью в градиентах CSS3.

13
задан Pavunkumar 23 June 2010 в 07:13
поделиться

2 ответа

Второй аргумент $output захватывает только STDOUT из вашего исполняемого файла. Сообщения об ошибках обычно отправляются в STDERR, чтобы их можно было легко записать в журнал ошибок или что-то подобное, но это означает, что вы не увидите их при вызове exec.

Если это система linux, вы можете добавить 2>&1 к вашей команде, чтобы перенаправить STDERR на STDOUT. Я не пробовал, но это должно перенаправить сообщения об ошибках в вашу переменную $output.

Edit:

Я прочитал об этом на www.php.net/exec, и кажется, что это сработает.

exec($file.' 2>&1', $outputAndErrors, $return_value);

Также можно перенаправлять ошибки во временный файл и читать их отдельно.

exec($file.' 2> '.$tmpFile, $outputOnly, $return_value);

Правка 2

Похоже, что windows также использует этот синтаксис перенаправления вывода в стиле Bourne, поэтому примеры должны работать и для windows.

Больше о потоках ввода и вывода

36
ответ дан 1 December 2019 в 07:18
поделиться

В $return_value будет код ошибки, возвращаемый программой, который должен быть достаточно содержательным, я не думаю, что вы можете иметь лучше.

0
ответ дан 1 December 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: