Sto usando phantomJS per creare PDF in PHP tramite la shell (shell_exec
). Lo script funziona bene sul server di produzione e funziona anche se inserisco il comando PhantomJS direttamente nel mio terminale.Script PhantomJS che restituisce una pagina Web vuota
Ma non funziona quando eseguo lo script nel mio ambiente dev locale. Mi chiedo se ci sia un problema con le autorizzazioni. Non voglio immergersi nello specifico del mio ambiente locale per ora, poiché Sto indovinando questo è un problema di alto livello ...
Il comando che si suppone di eseguire via 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
Il codice 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;
}
Avete le stesse versioni installate? Registrarsi agli eventi 'onConsoleMessage',' onError', 'onResourceError',' onResourceTimeout' ([Esempio] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf)). Forse ci sono errori. –
Hai provato a registrare il valore di '$ output'? – VolenD
@ user3584460 $ l'output viene valutato come falso, quindi non si tratta del problema –