2009-03-16 7 views
5

J'essaye d'exécuter firefox sur un serveur sans tête pour prendre des copies d'écran d'un site Web. Je peux le faire très bien à partir du terminal en utilisantUtilisation de PHP et Xvfb

"DISPLAY =: 12 firefox -saveimage http://www.google.com/".

Le problème est lorsque j'essaie de faire système ("DISPLAY =: 12 firefox -saveimage http://www.google.com"); ne fonctionne pas. J'ai le sentiment qu'il ne s'exécute pas dans un environnement shell normal. Je suis allé contre mon meilleur jugement et a donné à l'utilisateur Apache un shell réel. Si je su à apache et exécute la commande tout va bien et fonctionne comme prévu, mais encore une fois cela ne fonctionne pas d'un appel système. Toute idée est la bienvenue.

Répondre

0

Il est fort probable qu'il existe une dépendance aux variables d'environnement que vous avez configurées en tant qu'utilisateur shell et qui ne sont pas remplies par l'environnement de httpd. Avant de faire quelque chose d'héroïque avec l'environnement, je vous recommande de capturer stderr de votre travail (en ajoutant 2>/tmp/imgcaperrlog à la fin, par exemple) et de voir si cela fait des plaintes.

+0

J'ai donné un coup de feu et cela n'a pas fonctionné = – William

+0

D'accord, deuxième version. – chaos

+0

Je l'ai fatigué et ça ne fonctionne même pas. C'est ce qui m'a fait penser peut-être que l'environnement dans lequel php exécute les appels système est quelque peu différent. – William

3

J'ai trouvé la solution.

J'ai juste besoin de créer un script shell qui va appeler ça pour moi. Après avoir joué avec lui pendant un moment, je l'ai fait fonctionner après avoir ajouté export HOME="/var/www/" en haut du script.

J'espère que cela aide quelqu'un d'autre.

+0

+1 pour le suivi de la solution –

Questions connexes