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