2009-12-17 5 views
0

J'ai un problème. J'ai fait un script pour convertir une page HTML donnée (URL) dans un fichier jpg donné en utilisant html2image:Étrange erreur d'appel de programme

#!/bin/sh 
cd /absolute/path/html2imagev3 
LD_LIBRARY_PATH=.:/usr/lib:$LD_LIBRARY_PATH xvfb-run ./html2image $1 $2 

Il est alors exécuté comme ceci:

/path/to/convert 'http://www.google.com' /tmp/google_screen.jpg 

Cela fonctionne sans problème. Quand j'appelle ce script en utilisant PHP, cependant,

system('./convert ' . $url . ' ' . $file); 

je reçois cette erreur:

Xlib: extension "RANDR" missing on display ":99.0". 
current dir: /absolute/path/html2imagev3/libxpcom.so 
Failed to get HOME 

Comment puis-je résoudre ce problème?

Modifier: Je l'ai corrigé. Merci pour l'aide. En ajoutant une maison var au script converti le programme court:

HOME=/tmp LD_LIBRARY_PATH= ... 
+1

Je ne suis pas familier avec les serveurs/clients X mais il semble que 'xvfb-run' ouvre un client X qui n'a pas d'affichage lorsqu'il est appelé depuis PHP. Ainsi, les extensions R et R (Redimensionner et Rotation) ne peuvent pas démarrer. Cette extension est probablement nécessaire pour préparer votre image. Que faire à ce sujet, je ne sais pas. –

Répondre

0

paramètres Juste le var HOME dans le script de démarrage était la solution.

0

Eh bien, votre script xvfb-run lancera Xvfb, un X virtuel FrameBuffer, qui est essentiellement un serveur X11 sans écran connecté. Le protocole X11 comporte de nombreuses extensions, que tous les serveurs X ne prennent pas en charge. Dans ce cas, votre script html2image demande une extension donnée (l'extension RANDR, ou "R et R", comme le souligne Pekka) et ne peut pas le trouver. Si cela fonctionne lorsque vous êtes connecté en tant qu'utilisateur, et non lorsque vous utilisez PHP, c'est probablement parce que votre script PHP est exécuté avec un environnement différent. Je ne connais pas toutes les variables d'environnement qui peuvent affecter Xvfb, mais il semble que vous pourriez vouloir essayer d'activer explicitement l'extension RANDR, peut-être quelque chose comme:

 
xvfb-run -s "+extension RANDR" ./html2image $1 $2 
+0

-s "+ extension RANDR" n'aide pas. Merci quand même. – VDVLeon

+1

Le point est toujours valide, cependant, que quelque chose à propos de l'environnement sous lequel vous exécutez PHP provoque un comportement différent de Xvfb. Sans plus d'informations sur l'environnement de votre ordinateur, je ne peux pas en déduire ce qui pourrait être le problème. –

+0

J'utilise un serveur Debian 4 (pas de serveur X11 installé). C'est pourquoi j'utilise Xvfb. Mais qu'est-ce qui concerne mon environnement informatique? – VDVLeon