PHP CURL отправляет запрос на текущий домен/сервер, хотя в URL другой

R
На сайте с 03.08.2012
Offline
131
482

Приветствую!

Столкнулся с такой проблемой:
PHP curl отправляет запрос на текущий домен/сервер, хотя в url указан другой.

Код:

$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, 'https://site2.ru/api/');
curl_setopt($handle, CURLOPT_POST, 1);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($handle, CURLOPT_TIMEOUT, 10);
curl_setopt($handle, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');
curl_setopt($handle, CURLOPT_HEADER, 0); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_POSTFIELDS, $request); 

$response = curl_exec($handle);
curl_close($handle);

Код выполняется на домене site.ru и должен отправлять запрос на site2.ru/api/
Сайты находятся на разных серверах под разными IP.

Когда выполняю этот код на локалке - то все хорошо отрабатывает, как и должно.

Но когда выполняю этот код на сервере (site.ru) то запрос отправляется на этот же домен.
То есть запрос выполняется на адрес site.ru/api/ (вместо site2.ru/api/), при этом в $_SERVER['SERVER_NAME'] прописывается site2.ru

Судя по всему какие-то настройки на уровне сервера.

Подскажите, что это может быть и как это лечить?

LEOnidUKG
На сайте с 25.11.2006
Offline
1748
#1
при этом в $_SERVER['SERVER_NAME']

При чём тут это, если у вас в урле именно прописан site2.ru? Или код у вас другой?

Сделайте echo file_get_contents с вашего сайта на site2.ru и посмотрите, что там будет.

ну и:

curl_setopt($handle, CURLOPT_HEADER, 0); 

Можете в 1 поставить, посмотреть, что там вообще происходит. Может быть редирект.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Евгений Крупченко
На сайте с 27.09.2003
Offline
178
#2

site.ru у вас там default'ный на его ip? https://site.ru/ открывает то же что https://ip/ ?

Есть вероятность, что с сервера где site.ru dns запрос site2.ru возвращает ip от site.ru (а не ip от site2.ru). Может в hosts прописано, может ip для site2.ru вы недавно сменили и еще какой-то кэш не истек.

Узнайте какой ip у site2.ru видится с сервера site.ru

Например php скриптом:

<?echo `dig +short site2.ru`;?>

или:

<xmp><?print_r(dns_get_record('site.2.ru',DNS_A));?>

Если действительно покажет ip от site.ru, то ничего удивительного что запрос в итоге приходит на site.ru

R
На сайте с 03.08.2012
Offline
131
#3
Да, в hosts файле каким-то образом прописался домен. Удалил и все заработало.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий