PHP + PhantomJS Rasterize

Ich verwende PhantomJS 64-Bit in meiner PHP-Anwendung, um dynamisch eine HTML-Seite zu erfassen, die per E-Mail an den Benutzer gesendet werden soll.

phantomjs rasterize.js "http://..." /path_to_images/image.png

Diese Methode funktioniert einwandfrei, wenn ich die oben genannten Befehle in der Befehlszeile ausführe, aber wenn das PHP-Skript den Befehl mithilfe von ausführtexec Es schlägt ohne Ausgabe fehl und gibt den Beendigungscode 11 zurück.

Wenn ich es auf die 32-Bit-PhantomJS-Binärdatei umstelle, ist der Befehl erfolgreich, aber das Laden der Google JSAPI auf der Seite schlägt fehl, da ein Fehler aufgetreten istReference Error: can't find variable google. Dies ist ein Problem, da nicht der gesamte Seiteninhalt geladen und als Bild erfasst wird. Die JSAPI wird mit HTTPS eingebunden. Wenn ich auf HTTP umschalte, ist der Referenzfehler verschwunden, aber das gerenderte Bild ist komplett schwarz.

Ich habe den Befehl als derselbe Benutzer getestet, unter dem PHP ausgeführt wird.

Etwas zusammenfassen:

command> phantomjs_64 rasterize.js "http://..." /path_to_images/image.png

okay

exec('phantomjs_64 rasterize.js "http://..." /path_to_images/image.png');

Keine Ausgabe, Ausgangscode 11

command> phantomjs rasterize.js "http://..." /path_to_images/image.png
exec('phantomjs rasterize.js "http://..." /path_to_images/image.png');

Unvollständige Ausgabe

Weiß jemand, warum das standardmäßige Skript phantomJS rasterize.js unter PHP fehlschlägt oder eine Problemumgehung dafür bietet?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage