У меня есть meshlab, установленный на моей машине с ОС 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: cannot connect to X server
meshlabserver
comamnd отлично работает при запуске из командной строки.
Мне действительно нужно вызвать meshlab
из php-скрипта для моего сайта. Таким образом, любая помощь будет высоко оценена. Заранее спасибо.
Кажется, php-скрипт не может получить доступ к вашей отображаемой переменной. Если вы вошли в систему через ssh, запомните туннель своего X-сервера через "ssh -X...". Второй вариант - создать буфер виртуального фрейма с помощью Xvfb и перенаправить отображаемую переменную на него:
export DISPLAY=:100.0 Xvfb :100 &
Обратите внимание на амперсанд для второй команды, поскольку Xvfb должен работать в фоновом режиме.
meshlab
требует контекст OpenGL, которыйXvfb
явно не может предоставить. Следовательно, второй вариант не работает.