2012-12-31 7 views
0

Я пытаюсь создать файл на моем сервере Linux, содержащий вывод XML через PHP.Drupal 7 module shell_exec issue

Я использую следующую строку кода: переменная вывода

print "CHECKING: " . shell_exec("echo {$output} > tested.xml"); 

в $ содержит хорошо отформатированный XML, и я пытаюсь динамически создавать tested.xml и заполнить его ... но он не работает ,

дополненного:

Я просто попытался следующий подход:

print "CHECKING: " . shell_exec("echo {$output} > /var/www/mysite/sites/all/modules/my_module/output/tested.xml"); 

Затем я дал выходной каталог полные 777 разрешений, но мой файл XML все еще не получает создан.

+1

Используйте ['escapeshellarg ($ output)'] (http://us.php.net/escapeshellarg). Почему вы используете оболочку exec для чего-то, что можно сделать с помощью простых функций PHP? – DCoder

ответ

1

Единственное, чего не хватает в предоставленном коде, это абсолютное обозначение пути в перенаправлении, указанное в команде shell_exec. Предполагая, что пользователь ОС, на котором работает веб-сервер (например, «apache»), имеет доступ на запись к целевому каталогу, тогда вывод будет записан в файл, указанный в перенаправлении ввода-вывода.

Например, для того, чтобы записать вывод в файл XML в/TMP, используйте следующий код:

print "CHECKING: " . shell_exec("echo {$output} > /tmp/tested.xml"); 

ИЗМЕНЕНО:

Вместо того, чтобы дать ответ моего собственного Я решил опираться на вашу хорошую работу :-) Ваше предложение работало с полными тегами XML со следующим слегка скорректированным кодом:

print "CHECKING: " . shell_exec("echo '{$output}' > /tmp/tested.xml"); 

ps: И вы также были верны, что полный путь к разрешенному каталогу apache, в котором будет создан файл, абсолютно необходим.

+0

Благодарим вас за ответ. Я просто попробовал ваш подход, но он не сработал. Я обновил свой вопрос выше с изменениями, которые я сделал – sisko

+0

«Хорошо сформированный XML» будет содержать много «<' and '>» сам по себе. – DCoder

+0

Вы правы! Я попробовал 'output' вместо $ output, и мой document.xml документ был создан. Но теперь, как мне получить проблему с тегами < and >, с которыми работает мой XML-выход? – sisko

Смежные вопросы