2012-06-26 11 views
6

Sto cercando di far funzionare PhantomJS tramite PHP.PhantomJS non funziona in PHP tramite browser (ma tramite riga di comando, e anche eseguendo PHP attraverso la riga di comando)

Quando eseguo il file JavaScript direttamente tramite la riga di comando, funziona correttamente. Quando eseguo php render_html.php nella riga di comando, che esegue appena un exec(), funziona correttamente. Tuttavia, quando provo ad aprire questo file php nel browser, non fa nulla. Non riesco nemmeno a restituire nulla all'eco.

Ho eseguito tutto questo test localmente su OS X e sul mio server EC2 e ottengo lo stesso risultato.

+0

So che è un modo per tornare, ma sto avendo lo stesso problema, ma in CentOS. Suppongo che la sintassi del file sudoers in CentOS sarebbe diversa? – TomCDona

+0

Ciao. Ho spostato l'addendum di risposta a una risposta corretta, quindi le persone che accedono a Stack Exchange tramite l'API ottengono la corretta separazione Q/A. Se vuoi fare la tua risposta, per favore fallo e rimuoverò la mia versione CW. – halfer

risposta

0

Potrebbe essere un problema di autorizzazione, verificare se l'utente che esegue il server Web dispone dell'autorizzazione all'esecuzione dell'eseguibile phantomjs.

+1

Ho controllato le autorizzazioni sull'eseguibile stesso. Erano 755, che dovrebbe essere sufficiente. Modificato su 777 e ancora niente. Grazie comunque. – bearfriend

0

(pubblicato per conto del PO).

Sembra essere stato un problema di autorizzazioni. Sembra che Apache possa essere trattato in modo leggermente diverso dagli altri utenti? Anche se le autorizzazioni standard consentirebbero a qualsiasi utente di accedere all'applicazione PhantomJS, Apache non era ancora in grado di farlo.

Chiunque abbia problemi simili deve leggere this question and the answers.

Ecco la mia soluzione leggermente adattata per il mio caso specifico (sul server Linux). Modificare il file sudoers (/ etc/sudoers) per includere la seguente riga:

apache ALL=NOPASSWD: /usr/bin/phantomjs 

ho fatto con emacs, (C-x C-q per consentire la modifica di file di sola lettura). Non sembra che ci siano problemi con questo, ma suppongo che l'uso di qualcosa chiamato visudo sia raccomandato per la modifica di sudoers. Emacs ha funzionato per me, ma dovresti cercarlo.

Ciò dava all'utente apache l'accesso esplicito all'app PhantomJS dandogli accesso sudo, limitato solo all'app PhantomJS.

-1

Ho recentemente lavorato con phantomjs in ambiente CentOS 7 e ho affrontato lo stesso problema dell'op. Ho provato soluzioni e metodi che ho trovato nello stackoverflow uno sopra l'altro, quindi non sono abbastanza sicuro di quale metodo abbia funzionato o quali metodi abbiano lavorato insieme per risolvere il problema. Ho provato

  1. dando 777 permesso di phantomjs js binari e di destinazione e contenente directory (non ha funzionato)
  2. visudo e dando il permesso di Apache per usare phantomjs senza password (non ha funzionato)
  3. apache aggiunto al gruppo sys (non ha funzionato)
  4. disabilitato selinux dopo aver disabilitato selinux e riavviato cent os, phantomjs ha iniziato a funzionare nel browser. : D: D
Problemi correlati