Ich habe ein sehr seltsames Problem mit einem shell_exec
. Was ich versuche, ist ein PhantomJS aufzurufen und ihm 4 Argumente zu übergeben (Benutzer Session ID, URL, Datei speichern Name und Element, die ich nehmen muss) mit shell_exec, um einen Screenshot eines bestimmten Elements auf einem zu machen Seite.shell_exec eines PhantomJS-Skriptes tötet PHP-FPM und Apache
Also, mein Befehl sieht wie folgt aus:
/usr/local/bin/phantomjs --ignore-ssl-errors=true /Users/Igor/Sites/something/public_html/lib/phantomjs/script.js https://testsite.com/dashboard/\?dashboard_view=somedash /Users/Igor/Sites/something/uploads/screenshots/j78O3LstYumBnUi fef81e774e845d44044c167c6847f4d1 chart1 2>&1
Dies ist, was ich mit shell_exec ausführen:
$command = ' --ignore-ssl-errors=true ' . $this->script . ' ' . escapeshellarg($this->uri) . ' ' . escapeshellarg($path) . ' ' . $this->session . ' ' . $this->element;
$output = shell_exec("$this->phantomjs $command 2>&1 1> /dev/null");
Nachdem ich shell_exec
nenne ich deutlich sehen, dass Befehl ausgeführt wurde "ps uax | grep phantom"
verwenden, aber es bleibt dort für immer und verursacht einen sofortigen Tod von PHP-FPM (v5.4.45) und Apache2 auf einem Server. Ich muss hinzufügen, dass ich diesen Befehl asynchron über AJAX-Aufruf ausführe.
Ich habe verschiedene Ansätze ausprobiert - mit etwas anderes anstelle von shell_exec
, ein Bash-Skript, das Argumente akzeptiert, PhantomJS Runner .... nichts funktioniert.
Wenn ich diesen Befehl in einer Konsole ausführen - es funktioniert ohne Probleme.
Ich bin wirklich aus Ideen - nicht sicher, wie weiter zu gehen, so würde jede Hilfe geschätzt werden.
Fehler in den Protokollen? – Vaviloff
Nein, keine, ich habe alle überprüft. –
Funktioniert Shell_Exec für etwas einfacher? Wie phpinfo. Auch von welchem Benutzer läuft PHP-Skript? Kannst du diesem Benutzer von der Shell helfen und dann versuchen phantomjs zu starten? – Vaviloff