Je construis une application web en CakePHP et j'y ai intégré une fonctionnalité d'impression PDF en utilisant le plugin CakePdf, ainsi que le binaire wkhtmltopdf.
J'ai effectué des tests approfondis sur ma machine locale, et le code fonctionne et imprime les PDF comme prévu. Cependant, lorsque je télécharge ensuite l'application sur mon serveur web de production, j'obtiens les messages suivants :
Attention (2) : is_executable() [http://php.net/function.is-executable] : restriction open_basedir en vigueur. Le fichier(/usr/bin/wkhtmltopdf) n'est pas dans le(s) chemin(s) autorisé(s) : (/var/www/clients/client1/web1/web:/var/www/clients/client1/web1/tmp:/var/www/gravex.co.uk/web:/srv/www/gravex.co.uk/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) [APP/Plugin/CakePdf/Pdf/Engine/WkHtmlToPdfEngine.php, ligne 82]
Le binaire wkhtmltopdf n'est pas trouvé ou n'est pas exécutable : /usr/bin/wkhtmltopdf
Erreur : Une erreur interne s'est produite. Trace de la pile
APP/Plugin/CakePdf/Pdf/Engine/WkHtmlToPdfEngine.php line 29 WkHtmlToPdfEngine->_getCommand() APP/Plugin/CakePdf/Pdf/CakePdf.php line 234 WkHtmlToPdfEngine->output() APP/Plugin/CakePdf/View/PdfView.php line 101 CakePdf->output(string) CORE/Cake/Controller/Controller.php line 957 PdfView->render(null, null) CORE/Cake/Routing/Dispatcher.php line 193 Controller->render() CORE/Cake/Routing/Dispatcher.php line 161 Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse) APP/webroot/index.php line 96 Dispatcher->dispatch(CakeRequest, CakeResponse)
J'ai vérifié le fichier que le plugin CakePdf utilise pour charger wkhtmltopdf, et ce chemin est le suivant /usr/bin/wkhtmltopdf
comme il l'est sur ma machine locale. J'ai vérifié si wkhtmltopdf se trouve au même endroit et c'est le cas. Lors de l'installation de wkhtmltopdf, j'ai simplement extrait le binaire et l'ai placé à l'endroit indiqué, tant sur la machine locale que sur la machine de production.
Que puis-je faire pour régler ce problème ?
UPDATE
En suivant les conseils de stix, j'ai ajouté le chemin d'accès à open_basedir, mais je reçois toujours cette erreur. J'ai ensuite essayé d'exécuter wkhtmltopdf
dans le terminal, et j'ai reçu l'erreur "command not found". Cela s'est avéré être que le fichier binaire était corrompu. Depuis, j'ai téléchargé une nouvelle version du fichier binaire et, en utilisant la commande ./wkhtmltopdf
le binaire fonctionne. Si toutefois je ne mets pas le ./
avant, je reçois toujours l'erreur.