php_sapi_name()
на самом деле не лучший способ выполнить эту проверку, потому что она зависит от проверки на множество возможных значений. Бинарный файл php-cgi может быть вызван из командной строки, из сценария оболочки или как задание cron, и (в большинстве случаев) они также должны рассматриваться как 'cli', но php_sapi_name()
будет возвращать для них разные значения (обратите внимание, что это не относится к простой версии PHP, но вы хотите, чтобы ваш код работал где угодно, верно?). Не говоря уже о том, что в следующем году могут появиться новые способы использования PHP, о которых мы не можем знать сейчас. Я бы предпочел не думать об этом, когда все, что меня волнует, это погода, я должен обернуть вывод в HTML или нет.
К счастью, в PHP есть способ проверить это специально. Просто используйте http_response_code()
без каких-либо параметров, и он вернет TRUE, если он запускается из среды типа веб-сервера, и FALSE, если он запускается из среды типа CLI. Вот код:
$is_web=http_response_code()!==FALSE;
Это будет даже работать, если вы случайно (?) Установили код ответа из скрипта, запущенного из CLI (или что-то вроде CLI), прежде чем вызывать это.