2015-08-24 14 views
7

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; 
} 
+1

Avete le stesse versioni installate? Registrarsi agli eventi 'onConsoleMessage',' onError', 'onResourceError',' onResourceTimeout' ([Esempio] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf)). Forse ci sono errori. –

+0

Hai provato a registrare il valore di '$ output'? – VolenD

+0

@ user3584460 $ l'output viene valutato come falso, quindi non si tratta del problema –

risposta

1

Abbiamo scoperto che c'era una versione diversa di phantomjs installati localmente vs. sul server prod. È interessante notare che il bug si è verificato con la versione più recente (2.0.0) contro 1.9.8.

+2

È necessario contrassegnare la propria risposta come accettata, in questo modo non verrà visualizzata nell'elenco senza risposta. –