40

コマンドラインから PHP スクリプトを実行しているサーバーの名前を検出する方法はありますか?

HTTP 経由でアクセスされる PHP に対してこれを行うには、さまざまな方法があります。しかし、CLI でこれを行う方法はないようです。

例えば:

$_SERVER['SERVER_NAME'] 

コマンドラインからは利用できません。

4

9 に答える 9

88
echo php_uname("n");

http://php.net/manual/en/function.php-uname.phpを参照してください

于 2009-03-09T14:36:40.870 に答える
20
<?php
echo gethostname(); // may output e.g,: sandie

http://php.net/manual/en/function.gethostname.phpを参照してください。

php_uname('n')gethostname() はPHP 5.3 で追加されたものと同じ機能を持つ便利な関数です。

于 2010-12-28T13:07:21.247 に答える
12

同じ理由で、CLI から PHP を実行する場合、SERVER_NAME は使用できません。

CLI から PHP を実行すると、任意の種類のサーバーなしで、渡されたコードを実行する独自の PHP インタープリターが開始されます。そのため、CLI からは、PHP は Web サーバーについて、ユーザーが明示的に通知しない限り何も知りません。

于 2009-03-09T14:31:53.783 に答える
3

CLI を呼び出して、gethostname コマンドを使用します。

php -r "echo gethostname();"

版画:

your_hostname
于 2010-05-05T19:59:49.130 に答える
3

$_SERVER['SERVER_NAME'] を設定するphpスクリプトをコマンドラインに追加できます。これが私がそれを使用している方法です:

C:\SDK\php-5.5.25-Win32-VC11-x86\php.exe -S localhost:8080 -t D:\Projects\Sites\mysite router.php

ルーター.php

<?php
$_SERVER['SERVER_NAME'] = 'localhost:8080';
return false;    // serve the requested resource as-is.
?> 
于 2015-06-06T16:19:20.710 に答える
3

コマンドラインからホスト名を取得するには、php -r を使用して実行する必要もあります。Linuxでは、次を使用しました:

~#php -r 'echo php_uname("n");'
hostname

私が使用したウィンドウで:

D:\xampp\php>php -r "echo php_uname('n');"
MB-PC

さらに、コンソール経由でアクセスすると、PHP は従来の $_SERVER 値の多くを提供しませんが、アクセスしたサーバーには次のキーしかありません。

root@hermes:~# php -r 'foreach($_SERVER as $key =>$value){echo $key.",";}'
TERM,SHELL,SSH_CLIENT,SSH_TTY,USER,LS_COLORS,MAIL,PATH,PWD,LANG,SHLVL,HOME,LOGNAME,SSH_CONNECTION,LESSOPEN,LESSCLOSE,_,PHP_SELF,SCRIPT_NAME,SCRIPT_FIL
ENAME,PATH_TRANSLATED,DOCUMENT_ROOT,REQUEST_TIME,argv,argc
于 2013-04-09T12:53:42.727 に答える
2

コマンドラインからスクリプトを実行すると、サーバーが関与しないためでしょうか?

于 2009-03-09T14:21:48.393 に答える