nginx/php-fpm에서 실행되는 PHP 스크립트에서 다음 PHP 코드를 사용하여 X 프로그램을 실행할 수 있습니다.
shell_exec("DISPLAY=:0 /usr/bin/nohup '{$command}' > /dev/null 2>&1 &");
그러면 데스크탑에서 X 프로그램이 열리고 PHP 스크립트가 계속해서 완료됩니다. PHP 스크립트가 완료된 후에도 X 프로그램은 계속 열려 있습니다.
제가 시도한 모든 X 프로그램(mpv, kate, konsole, k3b 등 포함)에서는 작동하지만 Dolphin에서는 작동하지 않습니다. 이런 식으로 Dolphin을 실행하려고 하면 전혀 나타나지도 않고, 화면이나 제가 찾을 수 있는 모든 로그에도 오류가 없습니다.
이와 관련하여 Dolphin의 수행 방식에 차이가 있나요? 소켓/사용자/백그라운드 프로세스 또는 이와 유사한 것과 관련이 있습니까?
다음 사항을 확인했습니다.
- 바이너리 이름(dolphin)과 전체 경로(/usr/bin/dolphin)만 사용해 보십시오. 다른 모든 프로그램은 어쨌든 둘 다 사용할 수 있으므로 $PATH 문제는 아닌 것 같습니다.
DISPLAY=:0 /usr/bin/nohup '{$command}' > /dev/null 2>&1 &
Konsole 쉘에서 동일한 명령을 실행하면 Dolphin을 포함한 모든 것에 작동합니다.- PHP 오류 로그에 아무것도 없으며 모든 오류 수준이 활성화되어 있습니다.
- 나는 다른 Dolphin 창을 열고 모두 닫은 상태에서 이것을 시도했습니다. (그리고 Dolphin 프로세스가 아직 실행되고 있지 않음을 확인했습니다.)
- Xorg 로그에도 아무것도 없습니다
아니면 Dolphin에서 작동하는 비슷하지만 다른 PHP 코드가 있을까요?