2009-06-02 13 views
2

У меня есть PHP-скрипт, который должен обрабатывать RSS-канал одного и того же сайта. В частности, я показываю самые последние блоги из RSS-ленты WordPress на главной странице. На нашем промежуточном сервере это работало нормально, но на нашей live (это совершенно другая, но LAMP) среда хостинга она не работает.Использование file_get_contents или curl для url на том же сервере

Я могу запустить file_get_contents или curl на удалённом URL-адресе, но когда я пытаюсь получить наш собственный RSS-канал, мне возвращается страница 404, не найденная. Еще одна странность, если я попробую file_get_contents(http://domain.com/test.txt), она терпит неудачу с 404, но если я сделаю file_get_contents(http://www.domain.com/test.txt), я получаю содержимое тестового текстового файла. Это все при условии, я бегу сценарий из domain.com (не www.domain.com)

Я установка пример здесь: http://bkwld.com/test.php

+0

Возможно ли, что в/etc/hosts установлено либо www.bkwld.com, либо bkwld.com? –

ответ

2

Хорошо, я до сих пор не знаю, почему, черт возьми, он это делает, но я собираюсь решить его, запустив мой канал через feedburner, а затем разобрав его RSS-канал. Поскольку он находится в удаленном домене, он работает в моих тестах. Не идеальный, но w/e.

1

У меня была очень похожая проблема - вы можете попробовать использовать 127.0.0.1 вместо вашего собственного доменного имени (если ваша установка Apache не мешает вам это делать). Что-то делать с разрешением домена, я верю, quirk из api.

+3

Это полностью провалится, если сайт находится на виртуальном хосте. – grawity

+0

Да, к сожалению. – weotch

+1

Знаете ли вы, что ваш виртуальный хост настроен на псевдоним www.domain.com и domain.com друг к другу? – Kazar

0

Действительно, нечетный. Как вы будете разбирать файл? Вы можете загрузить его в SimpleXML напрямую;

$xml = simplexml_load_file("http://domain.com/blog/feed/index.php"); 
/* Use Simple XML to parse the RSS feed */ 

Я понимаю, что этот подход не решает вашу проблему, вы используете только другой подход - но, возможно, этого вам достаточно.

+0

Да, я с помощью Zend Framework Zend_Feed_Rss() раньше, и это не удалось. Это когда я попытался спуститься к исходному файлу с помощью file_get_contents и CURL – weotch

1

У меня была эта аналогичная проблема. Проблема с DNS - это не разрешение вашего доменного имени. Вы должны использовать IP-адрес вместо домена в своих сценариях.

Вы можете выполнить ping-домен в cmd и использовать этот IP-адрес.

0

Если домен domain.com/test.txt возвращает 404 и www.domain.com/test.txt успешно, хост-DNS может иметь размещенные домены, настроенные по-разному. В любом случае, я уверен, что вы уже пытались получить RSS-канал с помощью «www», но попытались ли вы с относительным путем? например: file_get_contents('../../feed/')