Видимо $_SERVER['SERVER_NAME'] ставится только при выполнении php скрипта из браузера.
Есть ли способ узнать имя сервера из командной строки?
Я попробовал php_uname("n"), как предложено в этом обсуждении Имя сервера PHP из командной строки. Но у меня это не работает, вместо имени сервера возвращает мое имя пользователя.
exec ("hostname"), если вы находитесь на машине * nix.
ну, вам нужно знать, что есть некоторые различия между SAPI в PHP, когда вы запускаете PHP-скрипт в своем веб-браузере, вы используете HTTP-сервер SAPI (Apache2 или nginx или что-то еще), а когда вы используете свой PHP из в командной строке вы используете CLI SAPI, поэтому






Используйте print_r ($ _ SERVER), чтобы увидеть все атрибуты переменных сервера. Может быть, вам подойдет еще один.
Ваше здоровье!
Это приведет к небольшому результату. Большинство переменных SERVER не имеют значения при выполнении через командную строку :) Одна из переменных без значения - SERVER_NAME :)
ну, вам нужно знать, что между SAPI в PHP есть некоторые различия, когда вы запускаете PHP-скрипт в своем веб-браузере, вы используете HTTP-сервер SAPI (Apache2 или nginx или что-то еще), поэтому возвращаемые данные в $ _SERVER Переменная будет зависеть от заголовков, которые сам веб-сервер будет передавать PHP. В то время как в терминале вы запускаете PHP под CLI SAPI, который является бессерверным, так сказать Если вы не используете встроенный php сервер.
Взгляните на страницу руководства $ _SERVER: -
$_SERVERis 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-запроса.
Вам нужно будет вручную настроить / сообщить вашему скрипту, в каком домене он должен работать, он не может обнаружить его без контекста.
взять
_DIR__и работать оттуда?