ckjet
написал 23 сентября 2012 года в 15:27 (1913 просмотра)
Ведет себя
как мужчина; открыл 44 темы в форуме, оставил 134 комментария на сайте.
На сервере debian под управлением isp-manager.
Если запускаю через консоль php-скрипт, в котором вызов сторонней програмы с помощью exec, то выводит нормально через print_r результат работы это програмы. Если запускаю через апач — пустой массив. Как сделать чтобы через апач я тоже получал нормальный результат? Мне кажется дело в правах под которыми запускается апач, но я незнаю как это проверить.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Разобрался по логам. Програма сообщает cannot connect to X server. Дело в том что программа консольная, не понимаю почему возникает такая ошибка, как можно решить эту проблему?
Очевидно, программа не совсем консольная. Что делать можно лишь гадать, не зная что за программа. Может быть у неё промежь опций есть что-то, говорящее программе не искать X-сервер. Может программу можно пересобрать указав ей в configure --without-X или что-нибудь типа того. В худшем случае можно запустить где-нибудь X-сервер доступный программе, и запускать её, передавая переменную окружения DISPLAY с координатами этого X-сервера.
Если таки программу не получится отучить от X-ов, можнол использовать null X server (xvfb). Я запускаю под вайном на headless серверах софтину одну так:
DISPLAY=:99 xvfb-run -s"+extension GLX +extension XVideo -screen 0 1600×1200x24» wine STserver_L01.exe
Даже если прога требует OpenGL то завести можно… Магическая константа DISPLAY=:99 — по умолчанию, скрипт xvfb-run запускает X-ы на 99-м дисплее.
ТОлько каждый раз запускать софтину с пом xvfb-run не надо, поскольку тогда каждый раз будет стартовать Х-серве заново. Где-нибудь с вкриптах инициализации можно сделать так:
DISPLAY=:99 xvfb-run -s"+extension GLX +extension XVideo -screen 0 1600×1200x24» xlogo
Отдельно надо разрешить подключаться к X-ам с локальной машины:
DISPLAY=:99 xhost +local
от того-же пользователя, от которого запущен X-сервер.
После этого:
DISPLAY=:99 xcalc , где xcalc — нужная программа, которая не может жить без иксов (глупая…)
Спасибо, буду пробовать. А как проверить есть ли уже x при вызове того же калькулятора?
В /tmp/.X11-unix/ должен быть UNIX domain сокет с именем файла X99.
вот что получилось:
cannot connect to X server :99
Попробуйте DISPLAY=:99 xhost + (без local)
Это перед названием програмы?
Нет. Это после запуска X-сервера. Это отключает контроль на подключение к X-серверу.