Garip program çağrısı hatası

2 Cevap php

Ben bir sorun var. Ben kullanarak belirli bir jpg dosyası verilen bir HTML sayfası (url) dönüştürmek için bir komut dosyası yapılmış html2image adres:

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

Daha sonra bu gibi çalışır:

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

Bu sorunsuz çalışıyor. Ben PHP kullanarak bu komut çağırdığınızda, ancak,

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

Ben bu hatayı alıyorum:

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

Ben nasıl bu sorunu düzeltebilirim?

Edit: I have fixed it. Thanks for the help. By adding a HOME var to the convert script the program runs:

HOME=/tmp LD_LIBRARY_PATH= ...

2 Cevap

Sadece başlangıç ​​komut ANA var çözüm oldu ayarları.

Peki, xvfb-run komut xvfb, aslında hiçbir ekli ekran ile X11 sunucu olan bir X Sanal framebuffer başlatacaktır. X11 protocol tüm X sunucusu destekleyen çok sayıda uzantıları vardır. Bu durumda, html2image komut (Pekka işaret ettiği gibi, RandR, ya da "R ve R" uzantılı) belirli bir uzantısı için soruyor ve onu bulamıyorum.

Eğer PHP çalışan olduğunuzda bir kullanıcı olarak oturum değil, bu işler eğer PHP komut dosyası, farklı bir ortamda çalıştırılır oluyor, bunun nedeni muhtemelen. Ben xvfb etkileyebilecek tüm ortam değişkenleri bilmiyorum, ama açıkça belki gibi bir şey ile, RandR uzatma sağlayan denemek isteyebilirsiniz gibi görünüyor:

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