1

背景:VPSで友達のためにMinecraftサーバーを実行していて、PHPを使用して一種の「ステータスWebページ」を作成しようとしています。これは私が実装しようとした最後のことです。サーバーのアップ/ダウンインジケーター、オンライン時間などがあります。

私が問題を抱えているスクリプトは、プレーヤーリストを表示することです。理想的には、サーバーでプレイしている人の名前のリストを表示し、オフラインの人は灰色、オンラインの人は青色で表示したいと考えています。

今私が問題を抱えている部分:

minecraftサーバーのjarfileは、minecraftというラベルの付いた「画面」で実行されます。オンラインプレーヤーのリストを取得するには、(画面で)「リスト」を実行してからEnterキーを押すと、プレーヤーのリストが出力されます。

PHPから画面でコマンドを実行するさまざまな方法を試しました。たとえば、次のようなものです。

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

Webページに常にエコーされる結果は次のとおりです。

Players online: No screen session found.

私は何が間違っているのですか?私のphpはひどいです(私はPHPを学んだことがなく、リファレンスから直接学んでいます)が、これは簡単に思えますか?

ちなみに、動的に強調表示された文字のリストを実現するための最良の方法は何ですか?再生し、explode()して比較する文字の配列ですか、それともデータベースに書き込んでそこから比較する必要がありますか?

みなさん、よろしくお願いします。

PS:参考までに、ウェブサイトはhttp://fudgesminecraftserver.infoにあり、そこで何が起こっているかを見ることができます。

4

1 に答える 1

0

これは、Linuxのアクセス許可の問題である可能性があります。Apache(www-data?)を実行しているユーザーにコマンド「screen」を実行する権限を与える必要があります

于 2012-01-13T09:45:51.217 に答える