2017-06-23 14 views
5

Używam skryptu php na moim serwerze apache/ubuntu do wywołania skryptu bash, który uruchamia aplikację pobierającą skrypt Pythona jako argument (IDAPro).Błąd uprawnień PHP/Ubuntu - QxcbConnection: Nie można się połączyć z wyświetlaniem przerwanym

kod PHP

chdir('/var/www/dashboard/team/static/sql'); 
$output = exec('sudo -u rohan ./start.sh'); 

Teraz, powyższy kod działa poprawnie jeśli uruchomić plik PHP z terminala - ale tylko wtedy, gdy go uruchomić jako administrator. Nie trzeba dodawać, że jeśli uruchomię plik Bash bezpośrednio, to też działa.

Ale kiedy uruchomić plik PHP w przeglądarce, to nie działa i pojawia się następujący błąd w dzienniku błędów apache:

QXcbConnection: Could not connect to display 
Aborted 

Rozumiem, że Apache/PHP działa jako „Bramki WWW- użytkownik danych (użył "whoami" do weryfikacji), i dlatego mam sudo w moim exec. Udoskonaliłem i zmodyfikowałem uprawnienia dla obu użytkowników bezskutecznie. Kiedy uruchamiam plik php z terminala jako użytkownik "www-danych", nie generuje on błędu, ale nic nie robi poza wyświetleniem losowych tagów echa I na początku i końcu skryptu w celu jego debugowania.

Jestem początkującym linuxem, więc każda pomoc jest bardzo doceniana.

Odpowiedz

4

OK, w końcu udało mi się go rozwiązać.

Problem nie dotyczy uprawnień, ale dotyczy zmiennych środowiskowych.

musiałem zawierać następującą linię w moim skryptu bash

export DISPLAY=':0.0' 

Należy pamiętać, że ustawienie zmiennej w terminalu i uruchamiając skrypt nie działa. Linia musi znajdować się wewnątrz skryptu.

Zakładam, że jest to spowodowane tym, że zmienna DISPLAY nie jest ustawiona, jeśli uruchamiasz skrypt jako dowolny użytkownik inny niż root, co dzieje się w przypadku Apache/PHP, gdzie skrypt jest wykonywany jako użytkownik "www-danych" .

2

może można użyć coś jak poniżej na górze skryptu:

if [ "$(id -un)" != "rohan" ]; then 
    exec sudo -u rohan $0 "[email protected]" 
fi 

export XAUTHORITY=/home/rohan/.Xauthority 
export DISPLAY=:0 
+0

Dzięki za 'XAUTHORITY'! – kyb

Powiązane problemy