Не работает cUrl с поддоменом

304
11 марта 2017, 04:34

Пытаюсь с основного домена (domain.ru) отправить cUrl запрос на поддомен (s1.domain.ru/path/to/script). Домены находятся на разных серверах. Проблема в том, что на локалке все работает (соответственно domain.local и s1.domain.local), но когда заливаю на сервер, то запрос до поддомена не доходит. В качестве вывода curl_exec() получаю 404 ошибку, стандартную. В тексте ошибки следующее:

The requested URL /path/to/script was not found on this server.

Такое чувтсво, что скрипт с cUrl на основном домене обращается не на поддомен s1, а на самого себя (domain.ru/path/to/script).

Код:

     $ch = curl_init()
     curl_setopt($ch, CURLOPT_URL, 's1.domain.ru/path/to/script');
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $page = curl_exec($ch);
     curl_close($ch);

Перепробовал по всякому на разных примерах из интернета. На другие сайты запрос идет и все работает, не работает только с поддоменом.

Скрипт s1.domain.ru/path/to/script простро выводит "Hello World".

Вопрос в следующем: возможно в curl_setopt нужно что то специфическое указывать или все таки дело в сервере. Может есть какие-то настройки, из-за которых неработает запрос на поддомен. Сам склоняюсь ко второму, но даже не представляю, что это могут быть за настройки.

php 7, ubuntu 16.04.

Answer 1

Проверьте какая ошибка:

 $ch = curl_init()
 curl_setopt($ch, CURLOPT_URL, $_SERVER['REQUEST_SCHEME'].'://'.'s1.domain.ru/path/to/script');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $page = curl_exec($ch);
 if (curl_errno($ch)) { 
        print "Error: " . curl_error($ch); 
 }
 curl_close($ch);

PS: Если у вас https попробуйте для проверки отключить верификацию:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
Answer 2

Возможно проблема в том что не указывали схему http или https в начале url. Попробуйте такой вариант:

$ch = curl_init()
curl_setopt($ch, CURLOPT_URL, 'http://s1.domain.ru/path/to/script');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($ch);
curl_close($ch);
Answer 3

Всем спасибо за ответы и потраченное время.

Проблему решил сам. Собственно, как обычно, сам ее и создал.

В панели управления сервером, был добавлен ip сервера поддомена (в ходе "экспериментов"), о чем я успешно забыл. Соответственно запрос шел не на сервер поддомена, а на собственный сервер.

READ ALSO
При вызове phpinfo() — выдает ошибку: «502 Bad Gateway». В чем может быть причина?

При вызове phpinfo() — выдает ошибку: «502 Bad Gateway». В чем может быть причина?

Здравствуйте! Установил phpstormПрописал путь к php-интерпритатору, который был установлен вместе с OpenServer

296
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

ЗдравствуйтеПишу скрипт на php, который по запросу пользователя выводит список документов, по 10 на страницу, все ок, все работает

278
Вырезать часть текста из строки

Вырезать часть текста из строки

ЗдравствуйтеЕсть строка, в которой содержится текст типа:

371
Деплой на мастер сервер

Деплой на мастер сервер

На данный момент в проекте есть дев сервер и у каждого разработчика своё локальное окружение приближенное к реальному

306