У меня на компьютере установлена сетевая метка с операционной системой Ubuntu 14.04. Я могу получить к нему доступ из командной строки, используя meshlabserver
команда. Но проблема возникает всякий раз, когда я пытаюсь вызвать его из сценария php с помощью команды
<?php
system('meshlabserver 2>&1');
?>
Показывает ошибку meshlabserver: cannot connect to X server
, Пройдя через несколько сайтов, я сделал следующие вещи:
Я переместил meshlabserver
исполняемый от /usr/bin
в /usr/local/bin
и дал ему исполняемые разрешения, используя
sudo chmod a+x meshlabserver
Но когда я побежал whoami
команда из моего PHP-скрипта (вызывая meshlabserver
) это показало www-data
, Поэтому я дал исполняемые права доступа для всех пользователей meshlabserver
с помощью
sudo chmod 777 /usr/local/bin/meshlabserver
Но все же это показывает то же самое meshlabserver: cannot connect to X server
ошибка. meshlabserver
comamnd работает нормально, когда запускается из командной строки.
Мне действительно нужно позвонить meshlab
из сценария php для моего сайта. Таким образом, любая помощь будет высоко ценится. Заранее спасибо.
Кажется, скрипт php не может получить доступ к вашей переменной дисплея. Если вы вошли в систему через ssh, не забудьте туннелировать свой X-сервер через ‘ssh -X …’. Второй вариант — создать виртуальный буфер кадров с помощью Xvfb и перенаправить переменную дисплея на него:
export DISPLAY=:100.0
Xvfb :100 &
Обратите внимание на амперсанд для второй команды, поскольку Xvfb должен работать в фоновом режиме.
Других решений пока нет …