1

배경 : VPS에서 친구를위한 Minecraft 서버를 실행 중이며 PHP를 사용하여 일종의 "상태 웹 페이지"를 만들려고합니다. . 이것은 구현하려고 시도한 마지막 사항입니다. 서버 업/다운 표시기, 온라인 시간 등이 있습니다.PHP 스크립트에서 Linux의 'screen'명령을 실행할 수 없습니다.

스크립트에 플레이어 목록이 표시됩니다. 이상적으로, 내가 할 수 있기를 원하는 것은 서버에서 재생하는 사람들의 이름 목록을 표시하고, 온라인 상태 인 사람들을 오프라인 상태로 색칠하고, 회색으로 회색으로 표시합니다.

마인 크래프트 서버 jarfile가가 '화면'에서 실행되는 레이블 마인 크래프트 :

지금 부분 나는에 문제가 있어요. 온라인 플레이어리스트를 얻으려면, (스크린에서) 'list'를 실행 한 다음 enter를 수행 할 수 있어야합니다. 그러면 플레이어 목록이 나옵니다.

$online = shell_exec('screen -S minecraft -X print "list\r"'); 
    echo "<pre>Players online: $online"; 

항상 웹 페이지에 반향 결과는 내가 잘못하고있는 중이 야 무엇

Players online: No screen session found. 

입니다 :

내가 같은 PHP에서 화면에서 명령을 실행하는 여러 가지 방법을 시도? 내 PHP는 심오합니다 (필자는 PHP를 배워 본 적이 없으며 참고 자료를 직접 배우고 있습니다). 그러나 이것은 간단합니다.

역동적으로 강조 표시된 문자 목록을 얻는 가장 좋은 방법은 무엇입니까? 재생하고 폭발() 및 비교하는 문자 배열 또는 데이터베이스에 쓰고 비교해야하는 문자 배열?

미리 감사드립니다.

추 신 : 참고로, 웹 사이트는 http://fudgesminecraftserver.info에 있으며, 지금 무슨 일이 일어나고 있는지 확인할 수 있습니다.

+0

사용자가 웹 서버를 제대로 실행하고 있습니까? 이 물건을 집행 할 수있는 올바른 파마가 있습니까? – Treffynnon

답변

0

이것은 Linux 권한 문제 일 가능성이 큽니다. 사용자가 Apache (www-data?)를 실행하여 명령 'screen'을 실행할 권한을 부여해야합니다.

+0

아, 그건 의미가 있습니다. 이것을 달성하는 방법에 대한 거친 포인터? 매우 빠른 google은 많이 찾지 못했지만 무엇을 검색해야합니까? – Fudge01010

+0

더 자세히 생각해 보면 권한이 있는지 확실하지 않습니다. 'screen session found '를 보여 주므로'screen '이 명백하게 실행되고 있습니다. – Fudge01010

+0

PHP가'screen '명령을 실행하게하면 WebServer (Apache? 보통 www-data)를 실행하는 사용자로 실행하게됩니다. 그러나 jarfile을 실행하는 화면 세션은 다른 사용자에 의해 시작되므로 동일한 범위에 있지 않습니다. 웹 서버를 root로 실행하고 디버깅 용으로 root로 화면 세션을 시작하십시오. –

관련 문제