X11 для пользователя apache

Мы используем inkscape конвертировать SVG изображения, загруженные на наш сервер через веб-форму. За это inkscape предлагает пакетный режим через -z вариант, но этот пакетный режим имеет недостаток: когда inkscape запускается пользователем apache, нарушает поговорку

$ inkscape -z -W drawing.svg
X11 connection rejected because of wrong authentication.
The application 'inkscape' lost its connection to the display localhost:11.0;
most likely the X server was shut down or you killed/destroyed
the application.

Если вы делаете то же самое, что и обычный пользователь, вы также получаете ошибки:

Xlib: connection to "localhost:11.0" refused by server
Xlib: PuTTY X11 proxy: MIT-MAGIC-COOKIE-1 data did not match
(inkscape:24050): Gdk-CRITICAL **: gdk_display_list_devices: assertion `GDK_IS_DISPLAY (display)' failed
301.27942

Но хотя бы inkscape дает правильный ответ (здесь число, указывающее ширину изображения).

Кто-нибудь знает, как заставить это работать на пользователя apache? Имеет ли смысл авторизовать apache использовать X (если так, как)? В любом случае это не похоже на правильное решение...

2 ответа

Решение

Такое поведение является признанной ошибкой, будем надеяться, что это будет исправлено в следующем выпуске: https://bugs.launchpad.net/inkscape/+bug/666272

Тем временем мой гугл-фу предлагает запустить vnc-сервер вместо Xvfb. Он может работать одновременно с вашим X-сервером. Вы можете запустить его как пользователь apache, поэтому у apache не возникнет проблем с отображением приложений X в этом буфере.

Это соединение аутентифицируется только паролем, поэтому не имеет значения, какой пользователь подключается к vncviewer. Однако обратите внимание, что протокол VNC не обязательно безопасен, поэтому обязательно используйте его только локально и настройте брандмауэр соответствующим образом.

Запустите сервер vnc как пользователь apache:

vncserver :2 -geometry 1024x768 - Это должно быть сделано только один раз

В скрипте, запускаемом apache, запускается только приложение; не запускайте vncserver или vncviewer:DISPLAY=:2.0 inkscape -z -W drawing.svg

Google нашел ответ здесь: http://www.linuxquestions.org/questions/programming-9/can-php-script-execute-x11-applications-811779/

Я столкнулся с похожей проблемой, исправить это легко, просто запустите Xvfb как демон и настройте пользователя Apache (в его среде или в скрипте запуска) с помощью DISPLAY и соответствующий xauth,

Другие вопросы по тегам