Что значит запускать PHP в тихом режиме?

Вы можете запустить PHP с помощью командной строки -q. В руководстве говорится:

Тихий режим. Запретить HTTP-заголовок вывода (только CGI).

Что это на самом деле означает на практике?

Ответ 1

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

X-Powered-By: PHP/5.3.3-1ubuntu9.3
Content-type: text/html

"(echo) What I actually wanted to have"

Таким образом, флаг -q командной строки предотвращает запись header() в stdout.

Цель заключается в использовании двоичного кода php-cgi вместо варианта CLI php для консольных скриптов. Обычно вы видите следующие скрипты в таких скриптах, чтобы заставить php-cgi вести себя как -cli-версия:

#!/usr/bin/php-cgi -qC

Ответ 2

Как вы можете видеть с помощью клавиши -q php подавляет подачу заголовков (добавляет некоторые новые строки на выходе, но делает их более читаемыми):

[email protected] ~ $ cat file.php
<?php

header('Location: http://stackoverflow.com');

echo 42;

[email protected] ~ $ php file.php
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.17
Location: http://stackoverflow.com
Content-type: text/html

42

[email protected] ~ $ php -q file.php
42