0

こんにちは、私は xinetd でこのサービスを利用しています:

service MyService 
{
port = 8881
socket_type = stream
wait = no
user = nobody
server = /usr/local/bin/php
server_args = /home/file/public_html/php/port/test1.php
log_on_success + = USERID
log_on_failure + = USERID
disable = no
}

私のファイルtest1.php:

<? php
$handle = fopen ('php :/ / stdin', 'r');
$input = fgets ($ handle);
fclose ($ handle);
$ip = $_SERVER['REMOTE_ADDR']
echo "Hello {$ input} your IP: $ip";
?>

リモート IP を取得できません:

$ip = $ _SERVER['REMOTE_ADDR']

リモートIPを取得できるので??

4

3 に答える 3

1

解決策は、PHP を次のように変更することです。

$IpX = $_SERVER['REMOTE_HOST'] ? $_SERVER['REMOTE_HOST'] : $_SERVER['HOST'];

<? php
$IpX = $_SERVER['REMOTE_HOST'] ? $_SERVER['REMOTE_HOST'] : $_SERVER['HOST'];
$handle = fopen ('php :/ / stdin', 'r');
$input = fgets ($ handle);
fclose ($ handle);
echo "Hello {$ input} your IP: $IpX";
?>

ありがとう: ゴンサロ鮎三

于 2012-07-17T19:35:37.420 に答える
0

$REMOTE_ADDRCGI プロトコルの一部として Web サーバーによって設定される環境変数です。あなたはソケットでまっすぐ走っています。ここには Web サーバーはありません。この変数 (または実際にLaxusがコメントで提案した変数) が設定されていないことは驚くべきことではありません。

リモートアドレスが必要な場合は、getpeernameを使用して自分で取得する必要があります。

于 2012-07-12T23:39:30.233 に答える