У меня есть скрипт PHP на веб-сервере.
Этот файл вызывается через оболочку другой программой , но он все еще может запускаться веб-сервером в ответ на запрос HTTP.
Как скрипт может определить способ его вызова?
Есть много способов; Я проверяю, пусто ли $_SERVER['HTTP_HOST']. Я думаю, что технически правильный способ - посмотреть, вернется ли php_sapi_name() cli
$_SERVER['HTTP_HOST']
php_sapi_name()
cli
Я пишу много приложений, которые работают одновременно в оболочке и в веб-контекстах, и этот лайнер облегчает
function isWEB() { return $GLOBALS['argc']===NULL; }
Есть определенные переменные среды, которые вы можете проверить. например $ _ SERVER ["REQUEST_METHOD"]
if (isset($_SERVER["REQUEST_METHOD"])) // run by server
удачи
Если он выполняется из оболочки, то у него не будет заголовков HTTP, поскольку он не был запрошен из протоколов HTTP.