Intereting Posts
PHPExcel изменяет существующий файл .xlsx с несколькими листами Кэшировать только часть страницы в PHP Как получить доступ к свойству / значению массива, который был преобразован в объект? Анализ CSS по регулярному выражению Невозможно выполнить функцию обратного вызова OOP для использования Получить данные из mysql по php для создания графического графика Переслать неопределенное количество аргументов в другую функцию Отображение данных php echo $ row в модальной форме загрузки Как загружать изображения на Php-сервер и хранить в phpmyadmin Catch не работает и как отключить обработчик исключений Допустимо ли использовать сочетание объектно-ориентированного стиля с процедурным стилем в кодировании PHP? «Правильное» разделение / разность между index.php и фронт-контроллером PHP MySQL PDO lastInsertID вызывает фатальную ошибку Получить коэффициенты числа Массив фильтра на основе другого ключа и значений массива

Как скрипт PHP обнаруживает, был ли он вызван как сценарий или оболочка?

У меня есть PHP-скрипт на веб-сервере.

Этот файл вызывается через оболочку другой программой, но он все равно может выполняться веб-сервером в ответ на HTTP-запрос.

Как скрипт может определить способ его вызова?

Solutions Collecting From Web of "Как скрипт PHP обнаруживает, был ли он вызван как сценарий или оболочка?"

Есть много способов; Я проверяю, пуст ли $_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; }