Я использую phantomJS для создания PDF-файлов в PHP через оболочку (shell_exec
). Скрипт отлично работает на рабочем сервере, а также отлично работает, если я подключаю команду PhantomJS непосредственно к моему терминалу.Сценарий PhantomJS, возвращающий пустую веб-страницу
Но это не работает, когда я запускаю сценарий в локальной локальной среде. Мне интересно, есть ли проблемы с разрешениями. Я не буду погружаться в специфику моей местной окружающей среды на данный момент, так как я предполагаю, что это является проблемой высокого уровня ...
Команда, которая должна выполняться с помощью shell_exec()
:
/usr/local/bin/phantomjs --ignore-ssl-errors=true --debug=true ../scripts/renderTeamProfile.js https://127.0.0.1/app_dev.php/pdf/enterprise-lpc-enterprise/profile/render /private/var/tmp/pjsK2N16E.pdf
php
код:
public function pdfResponse($url, $script, $remote_filename)
{
$tempFile = tempnam('/tmp', 'pjs');
// The extension specifies output format. Use pdf
$tempFilePdf = $tempFile . '.pdf';
rename($tempFile, $tempFilePdf);
# nginx should restrict access to the localhost URL
$urlLocal = preg_replace('/^https:..[^\/]+/', 'https://127.0.0.1', $url);
$phantomJs = $this->container->getParameter('testsite.phantomjs_cmd');
$command = $phantomJs.' --debug=true '.$script.' '.$urlLocal.' '.$tempFilePdf;
$output = shell_exec($command);
$content = file_get_contents($tempFilePdf);
$response = new Response($content, 200);
$response->headers->set('Content-Type', 'application/pdf');
$response->headers->set('Content-Disposition',
('inline; filename="' . $remote_filename . '"'));
return $response;
}
У вас установлены одинаковые версии? Пожалуйста, зарегистрируйтесь в событиях onConsoleMessage, 'onError',' onResourceError', 'onResourceTimeout' ([Пример] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf)). Возможно, есть ошибки. –
Вы пробовали записывать значение '$ output'? – VolenD
@ user3584460 $ output оценивается как false, так что это не проблема –