Сохранить проблему DOMDocument (может быть, использовать cURL?) - PullRequest
0 голосов
/ 17 августа 2011

В настоящее время у меня очень простая система новостей, которая читает RSS из локального файла, используя DOMDocument->load().Кроме того, есть очень простой бэкэнд, который добавляет элементы в загруженный канал и сохраняет его обратно, используя DOMDocument->save().

. Это прекрасно работает на моем тестовом сервере, но при развертывании на клиенте операция сохранения завершается неудачно сошибка 500Я думаю, что это связано с имеющимися ограничениями, которые также препятствуют использованию fopen и file_get_contents, хотя меня смущает то, как я могу нормально загрузить XML, но не сохранять его снова.

Так что на самом деле у меня есть два вопроса (непонятно, я знаю):

  1. Существенно ли метод сохранения в DOMDocument отличается от загрузки, и какой основной метод используется для записи файла?
  2. Как мне сохранить объект DOMDocument в формате XML с использованием cURL (потому что я знаю, что cURL разрешен)?

Для чего это стоит, вот усеченная версия загрузки / сохранения:

//load the xml
$doc = new DOMDocument();
$doc->load($_SERVER['DOCUMENT_ROOT'].'/news_rss.xml');
$doc->formatOutput = true;
//add some stuff to the xml ...

//save it again
$doc->save($_SERVER['DOCUMENT_ROOT'].'/news_rss.xml');

1 Ответ

0 голосов
/ 17 августа 2011

Керл и Дом не имеют ничего общего друг с другом.Curl просто выбирает указанный ресурс (или отправляет данные на ресурс).DOM анализирует деревья xml / html.Тот факт, что вы можете указать dom на конкретный URL и получить его содержимое, является побочным продуктом PHP-файловых функций, позволяющих URL-адреса.

Нет связи между DOM и CURL, поэтому вы не можете вызывать DOMскручивать, чтобы получить / сохранить для вас.Вы должны будете использовать CURL для извлечения некоторого ресурса и сохранения его во временный файл (или переменную), а затем использовать этот файл / переменную в качестве источника в DOM.То же самое касается и версии - DOM не может вызвать curl для сохранения файла.

Учитывая, что ваши вызовы загрузки / сохранения не используют URL-адреса (только локальный путь к файлу), я бы проверил разрешения для news_rss.XML-файл.Обычно большинство файлов в системе доступно для чтения всем, но не у всех есть права на запись.

...