Код работает в PHP 5.3.2.В PHP 5.2.17 получить неверный аргумент для foreach () - PullRequest
0 голосов
/ 20 февраля 2011

Я использую этот код: -

<?php // Load and parse the XML document

$rss =  simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title =  $rss->channel->title;
?>
<html xml:lang="en" lang="en">
<head>
  <title><?php echo $title; ?></title>
</head>
<body>

<h1><?php echo $title; ?></h1>

<?php
// Here we'll put a loop to include each item's title and description
foreach ($rss->channel->item as $item) {
  echo "<h2><a href='" . $item->link . "'>" . $item->title . "</a></h2>";
  echo "<p>" . $item->description . "</p>";
}
?>

</body>
</html>

Что я получил с этого сайта www.ibm.com/developerworks/library/x-simplexml.html

У меня одна загадочная проблема.

Когда я запускаю код на своем сервере разработки, он работает без проблем.

Когда я запускаю его на своем веб-сервере, я получаю следующее сообщение об ошибке: -

Предупреждение: неверный аргумент указан для foreach () в /web1/............../test3.php в строке 15

Мой сервер разработки - это сервер TurnKey Linux LAMP с PHP 5.3.2.

На моем веб-хосте работает PHP 5.2.17 в Linux.

Поиск сообщения об ошибке в Интернете, по-видимому, указывает на то, что данные, считанные из канала XML, не обрабатываются PHP 5.2.17 как массив.

Решения, приведенные здесь в разделе «Недопустимый аргумент .... foreach ()», которые я пробовал, не решают проблему.

Есть идеи, как это обойти?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Похоже, что инстинкты Торстейна «на пуговице»;мой веб-хост, кажется, блокирует загрузку файлов из Интернета.

Я использовал этот сегмент кода, чтобы попытаться загрузить удаленный файл в локальную копию: -

if(!@copy('http://partners.userland.com/nytRss/nytHomepage.xml','./buffer.xml'))

Полученный файл buffer.xml содержал следующее: -

Запрошенный вами URL был заблокирован.URL = partners.userland.com/nytRss/nytHomepage.xml

Это не относится к этому URL-адресу, я получаю то же самое для URL-адреса новостной ленты BBC.

Итак, индикаторычто это не проблема PHP!

Я поднял проблему с моим провайдером веб-хостинга.

Одна вещь, о которой эта проблема напомнила мне, это то, что сообщение об ошибке PHP и номер строки могут быть далекоудалено из реальной проблемы!

Спасибо Torstein, mario & GusDe Cool за помощь в решении этой проблемы.

BillP

0 голосов
/ 20 февраля 2011

Похоже, ваш веб-хост отключил открытие файлов в интернете.

Я не уверен, как работает simplexml_load_file(), но если вы запускаете phpinfo() на веб-сайте и такие опции, как allow_url_fopen и allow_url_include отключены, это хороший показатель.

...