Я просто перенес проект с localhost на мой удаленный сервер и заметил, что некоторые из моих скриптов перестали работать. Самое главное – это тот, который полагался на file_get_contents()
для извлечения значений JSON из другого сценария.
Версия PHP – 5.2.4
allow_url_fopen
включен
Предупреждение:
file_get_contents()
[function.file-get-contents]
:php_network_getaddresses
:getaddrinfo
не удалось: имя или услуга, неизвестные в/var/www/html/2009/functions/functions.products.php
вline 5
Предупреждение:
file_get_contents(http://data.example.com/new-data.php) [function.file-get-contents]
: не удалось открыть поток:Success in /var/www/html/2009/functions/functions.products.php
вline 5
Сценарий запускается с: http://www.example.com
Место, переданное в функцию, – http://data.example.com/new-data.php
Примечание . Одно и то же имя домена, но два разных сервера.
function getData() { $location = "http://data.mysite.com/new-data.php"; $contents = file_get_contents($location); $jsonVars = json_decode($contents); return $jsonVars }
Имя или услуга неизвестны
DNS сломан. Можете ли вы ping data.mysite.com
из оболочки на машине (если у вас есть)?
Попробуйте заменить data.mysite.com
на фиксированный IP-адрес.
Также вы можете попробовать завиток:
$curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, 'http://url.url'); $result = curl_exec($curl); curl_close($curl);
И вы получаете то, что хотите в $result
.
Посмотрите на свой / etc / hosts на удаленном сервере. Если он пуст, вам нужно добавить '127.0.0.1 localhost'.
Если это не одна из разновидностей VPS, где интерфейс loopback попадает на внешнюю машину; на них вам нужно использовать IP-номер VPS вместо 127.0.0.1.
Если вы уверены, что это не проблема DNS, попробуйте перезапустить Apache. Это разрешило это для меня после 20 минут царапин на голове.
Пожалуйста, добавьте дополнительную информацию, содержит ли содержимое $? Не забудьте сделать json_decode ($ contents, true), если вы хотите, чтобы он был как php-массив, иначе возвращался stdClass.
Может ли проблема решить имя хоста? является data.mysite.com той же машиной, что и mysite.com?