На каком ip работает php
Сегодня понадобилось, чтобы некий робот работал со второго ip-шника сервера. Но при обычном тесте, этого не получилось..
хост, например site.ru настроен на дополнительный ip, например 192.168.0.2. Вот такой код:
1 2 3 4 5 6 |
<?php $url='http://www.myip.ru/ru-RU/index.php'; echo file_get_contents($url); ?> |
показывал основной ip-шник 192.168.0.1 , а не дополнительный 192.168.0.2
Вот по этому адресу: http://www.myip.ru/ru-RU/index.php находится скрипт который показывает ваш ip. В случае если он перестанет работать, зайдите в гугл и задайте запрос: "Мой ip" и вы найдете кучу альтернатив.
Немного погуглив я нашел здесь: GET запрос в PHP с разных IP адресов, целых два способа это сделать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php $url = "http://www.myip.ru/ru-RU/index.php"; echo "<h1>CURLOPT_INTERFACE</h1>"; $get = curl_init(); curl_setopt($get, CURLOPT_URL, $url); curl_setopt($get, CURLOPT_INTERFACE,'192.168.0.2'); curl_setopt($get, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($get, CURLOPT_RETURNTRANSFER, 1); curl_setopt($get, CURLOPT_TIMEOUT, 60); $buf = curl_exec($get); echo $buf; echo "<h1>socket_bind</h1>"; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Unable to create socket\n"); socket_bind($sock, '192.168.0.2'); socket_connect($sock, 'myip.ru', 80); $request = "GET /ru-RU/index.php HTTP/1.1\r\n"; $request .= "Host: myip.ru\r\n"; $request .= "Connection: Close\r\n\r\n"; socket_write($sock, $request); $buff= ""; do { $recv = ""; $recv = socket_read($sock, '1400'); if($recv != "") { $buff .= $recv; } } while($recv != ""); socket_close($sock); echo $buff; ?> |
Т.к. я уже использовал curl, то первый способ мне подошел.
Author: | Tags: /
| Rating:
Leave a Reply