PHP - имя сервера из командной строки

Видимо $_SERVER['SERVER_NAME'] ставится только при выполнении php скрипта из браузера.

Есть ли способ узнать имя сервера из командной строки?

Я попробовал php_uname("n"), как предложено в этом обсуждении Имя сервера PHP из командной строки. Но у меня это не работает, вместо имени сервера возвращает мое имя пользователя.

взять _DIR__ и работать оттуда?

Martijn 29.08.2018 10:22

exec ("hostname"), если вы находитесь на машине * nix.

AnTrakS 29.08.2018 10:22

ну, вам нужно знать, что есть некоторые различия между SAPI в PHP, когда вы запускаете PHP-скрипт в своем веб-браузере, вы используете HTTP-сервер SAPI (Apache2 или nginx или что-то еще), а когда вы используете свой PHP из в командной строке вы используете CLI SAPI, поэтому

hassan 29.08.2018 10:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
596
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используйте print_r ($ _ SERVER), чтобы увидеть все атрибуты переменных сервера. Может быть, вам подойдет еще один.

Ваше здоровье!

Это приведет к небольшому результату. Большинство переменных SERVER не имеют значения при выполнении через командную строку :) Одна из переменных без значения - SERVER_NAME :)

Martijn 29.08.2018 10:29

ну, вам нужно знать, что между SAPI в PHP есть некоторые различия, когда вы запускаете PHP-скрипт в своем веб-браузере, вы используете HTTP-сервер SAPI (Apache2 или nginx или что-то еще), поэтому возвращаемые данные в $ _SERVER Переменная будет зависеть от заголовков, которые сам веб-сервер будет передавать PHP. В то время как в терминале вы запускаете PHP под CLI SAPI, который является бессерверным, так сказать Если вы не используете встроенный php сервер.

Взгляните на страницу руководства $ _SERVER: -

$_SERVER is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here. That said, a large number of these variables are accounted for in the » CGI/1.1 specification, so you should be able to expect those.

что означает - опять же - что данные, которые будет содержать переменная $ _SERVER, будут зависеть от информации, которую веб сервер вернет / выбросит.


В качестве обходного пути вы можете проверить, работает ли сценарий под CLI SAPI, а затем установить некоторую переменную пользовательские значения для $_SERVER

Ответ принят как подходящий

При выполнении сценария из командной строки не задействован «сервер». Вы просто запускаете программу на машина. Сама по себе эта машина не связана ни с одним доменным именем. На одной машине может работать несколько веб-серверов, каждый из которых отвечает за несколько доменов. Таким образом, $_SERVER['SERVER_NAME'], который исходит из конфигурации веб-сервера (например, директивы Apache ServerName), имеет смысл только в контексте входящего HTTP-запроса.

Вам нужно будет вручную настроить / сообщить вашему скрипту, в каком домене он должен работать, он не может обнаружить его без контекста.

Другие вопросы по теме