PhantomJS не визуализируется при выполнении с PHP
Новичок в phantomjs решил использовать это для печати скриншотов с веб-страниц. С терминала все работает нормально, но при выполнении из PHP-скрипта с функцией shell_exec рендеринг не работает.
Это как раз та часть, которая выполняет phantom из PHP. Другие команды, выполняемые с помощью shell_exec, работают, только не рендеринг.
$output = shell_exec("phantomjs phantom.js");
echo $output;
Это фантомный скрипт, который отлично работает при выполнении в оболочке
var page = require('webpage').create();
page.open( "http://www.google.co.uk" , function(s){
var title = page.evaluate(function(){
var main = document.getElementsByTagName("center");
main[0].style.visibility = "hidden";
return document.title;
});
console.log("rendering now");
page.render("title" + ".png");
phantom.exit();
});
1 answers
Это может привести к более предсказуемым результатам -
Для целей тестирования просто используйте:
exec("phantomjs phantom.js");
Убедитесь, что у вас есть phantomjs, который можно выполнить в той же папке, что и ваш выполняемый php-скрипт.
Во-вторых, потеряйте выходную переменную $. Я попробовал что-то похожее на то, что вы пробовали, и это не сработало - ваш фантомный сценарий ничего не вернет в его текущем состоянии, а shell_exec находится на пути к тому, чтобы стать устаревшим из-за его непредсказуемой и небезопасной природы. ИМХО shell_exec в лучшем случае хакерский и временный.
В-третьих, измените свою папку на "777" для тестирования. Или сохраните вывод рендеринга страницы в папку с правами на запись.
Что касается возврата полезных данных (читай: пригодных для использования несколькими одновременными пользователями, поскольку это медленная и блокирующая операция) из скрипта PhantomJS в ваш PHP-скрипт.... хорошо... в этом и заключается проблема...