2012-01-13 13 views
1

背景:私はVPSの友達のためにMinecraftサーバーを実行しています。PHPを使用して、そのような「ステータスWebページ」を作成しようとしています。 。これは実装しようとした最後のものです。サーバーのアップ/ダウンインジケーター、オンライン時間などがあります。PHPのスクリプトからLinuxの 'screen'でコマンドを実行できません

スクリプトにはプレイヤーリストが表示されています。理想的には、サーバー上でプレイする人の名前のリストを表示し、オフラインの人をグレーに色分けし、オンラインの人を青色にすることが理想的です。

のMinecraftサーバーのjarファイルが「画面」で実行され、ラベルのMinecraft:

は今、一部私が問題を抱えています。オンラインプレーヤーのリストを取得するには、(画面内で) 'list'を実行してからEnterを押すと、プレイヤーのリストが表示されます。

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

常にWebページにエコー結果は私が間違っているのは何

Players online: No screen session found. 

です:

は私のようなPHPからの画面でコマンドを実行するさまざまな方法を、試してみましたか?私のPHPは酷いです(私はPHPを学んだことはなく、リファレンスを直接学習しています)が、これは簡単なことでしょうか?

ダイナミックに強調表示された文字のリストを得るにはどうすればよいでしょうか?再生し、分解()し、比較する文字の配列、またはデータベースに書き込んで比較する必要がありますか?

ありがとうございます。

PS:参考のため、ウェブサイトはhttp://fudgesminecraftserver.infoにあります。そこには何が起こっているのかが分かります。

+0

あなたのWebサーバーが適切なシェルを持っているかどうかを確認しますか?それはこの物を執行するための正しいパーマを持っていますか? – Treffynnon

答えて

0

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

+0

ああ、意味があります。どのようにこれを達成するための任意の荒い指針?非常に速いgoogleはあまり変わっていませんでしたが、私は何を探していますか? – Fudge01010

+0

もっと詳しく考えてみると、権限があるかどうかはわかりません。 'screen session found 'と表示されるので、' screen'は明らかに実行されています。 – Fudge01010

+0

PHPがコマンド 'screen'を実行させると、ウェブサーバー(Apache?通常はwww-data)を実行しているユーザーとして実行されます。しかし、jarファイルを実行している画面セッションは、別のユーザーによって開始されるため、同じスコープにはありません。 Webサーバーをrootとして実行し、rootとしてのセッションを開始してください(デバッグ用) –

関連する問題