Вы, вероятно, знакомы с сервисами миниатюр веб-сайтов, такими как websnapr.com, например.
В настоящее время я работаю над чем-то подобным для разных целей, поэтому, разумеется, мне нужен был сервер, который запустил бы веб-браузер с URL-адресом, чтобы сделать снимок экрана и перейти к следующему.
Это скрипт bash, который я выполняю с помощью bash script.sh 'http://google.nl' /var/www/images/google.png
#! /bin/bash
export DISPLAY=":4"
killall firefox-bin
/usr/bin/firefox --display :4 "$1" &
/bin/sleep 20
xte "key F11"
/bin/sleep 3
/usr/bin/import -window root -display :4 "$2"
/bin/sleep 3
killall firefox-bin
и у меня Xvfb работает под управлением 'Xvfb: 4-screen 0 1024x768x24 &'
Скрипт отлично работает при запуске через ssh или только через терминал обычного пользователя, но когда я пытаюсь выполнить его через php, как:
exec('bash /var/scripts/test.sh "http://google.nl" /var/www/char.png');
все, что я получаю, это полностью черный скриншот 1024x768, при просмотре журналов ошибок apache я вижу, что он не может killall firefox, когда он работает под основным пользователем (разрешение не разрешено), но даже когда он закрыт, он может не начинайте (не выдавая ошибку).
Есть идеи, что случилось? В идеале, поскольку он работает с моим основным пользователем, он просто хотел бы иметь возможность выполнять его как этого пользователя вместо пользователя www-data, безопасность не является проблемой, поскольку не будет прямого подключения к этому серверу (только через другой сервер на той же сети).