PHPでLinuxターミナルコマンドを開く

ザワークラウト:

Linuxで実行されているサーバーで、12ノード(Linuxが実行されている12台のコンピューター)に対してコマンドを実行しています。最近、サーバーにPHPをダウンロードして、特定のPHPファイルを開いてコマンドを実行できるWebページを作成しました。

私が使用しexec()passthru()shell_​exec()、とsystem()system()私のコードの一部を返す唯一のものです。PHPをLinuxでopen termainalコマンドのように動作させたいのですが、それを行う方法がわかりません!

これが現在起こっていることの例です(Linux対PHP):linux open terminalコマンドを直接使用する場合:

user@wizard:/home/hyperwall/Desktop> /usr/local/bin/chbg -mt

私は出力を取得します:

The following settings will be used:
  option = mtsu   COLOR =    IMAGE = imagehereyouknow!
  NODES  = LOCAL
and additional code to send it to 12 nodes.

今PHPで:

switch($_REQUEST['do'])
{ case 'test':
    echo system('/usr/local/bin/chbg -mt');
    break;
}

出力:

The following settings will be used:
  option = mtsu   COLOR =    IMAGE = imagehereyouknow!
  NODES  = LOCAL

そして止まる!誰かが何が起こっているのか説明がありますか?そしてそれを修正するには?システムのみがコードの一部を表示し、他の関数は何も表示しません!

madz:

私の最初の考えは、それがstdおよび出力エラーに関するものである可能性があるということです。一部のソフトウェアは、標準出力に関する情報と標準エラーに関する情報をダンプします。stdエラーをstd outにリダイレクトしない場合、ほとんどのシステムコールはstdout部分のみを返します。出力全体がターミナルに表示され、システムコールでは表示できないのは、そのためだと思います。だからと試して

 /usr/local/bin/chbg -mt 2>&1  

編集:一時的な作業でも、他のことを試すことができます。たとえば、出力をスクリプトの横のファイルにリダイレクトし、コマンドの実行後にその内容を読み取ります。これにより、execを使用できます。

exec("usr/local/bin/chbg -mt 2>&1 > chbg_out");
//Then start reading chbg_out and see is it work

Edit2また、他の人があなたのために働いていない理由も意味がありません。たとえば、cで書かれたこのコードは、文字列をstderrにダンプし、その他はstdoutにあります。

#include <stdio.h>
#include<stdlib.h>
int main()
{

    fputs("\nerr\nrro\nrrr\n",stderr);
    fputs("\nou\nuu\nuttt\n",stdout);
    return 0;
}

そしてこのphpスクリプトは、execを介してそれを実行しようとします:

<?php

exec("/tmp/ctest",&$result);

foreach ( $result as $v )
{
echo $v;
}
#output ouuuuttt
?>

それでもstdoutが出力されることを確認してください。しかし、それはstderrを受け取りませんでした。これを検討してください:

<?php

exec("/tmp/ctest 2>&1",&$result);

foreach ( $result as $v )
{
    echo $v;
}
//output: errrrorrrouuuuttt
?>

ご覧のとおり、今回は出力全体を取得しました。

今回はシステム:

<?php
     echo system("/tmp/ctest 2>&1");
     //output: err rro rrr ou uu uttt uttt
?>

等々 ...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

現在のターミナルで新しいタブを開くコマンド

分類Dev

現在のターミナルで新しいタブを開くコマンド

分類Dev

Safariを開くためのターミナルコマンド

分類Dev

ターミナルを開かずにターミナルコマンドを実行する-Linux

分類Dev

ターミナルコマンドを使用してnautilusで「スター付き」カテゴリを開く方法

分類Dev

Macターミナルの検索と開くコマンド

分類Dev

ターミナルコマンドを使用してChromeの履歴を開く

分類Dev

ubuntu 16.04の「ターミナルで開く」コマンドは、変更されたディレクトリでターミナルを開きません

分類Dev

ターミナルコマンドからGenymotionデバイスを開くことはできますか?

分類Dev

ターミナルはmatlabを開くだけで、コマンドは実行しません

分類Dev

スクリプトまたはコマンドを使用して Linux ターミナルで複数の画面を開く

分類Dev

ターミナルからのコマンドでleinreplを開始します

分類Dev

Javaでターミナルウィンドウを開く

分類Dev

ターミナルコマンドを使用してフォルダからファイルを開く方法

分類Dev

新しいSafariウィンドウを開くためのターミナルコマンド

分類Dev

コマンドラインから新しいターミナルタブを開く(Mac OS X)

分類Dev

C#Linuxでターミナルコマンドを実行する

分類Dev

JavaからターミナルでLinuxコマンドを実行する

分類Dev

新しいクロムタブを開くためのターミナルコマンド

分類Dev

新しいクロムタブを開くためのターミナルコマンド

分類Dev

現在のターミナルから新しいターミナルウィンドウを開くコマンド?

分類Dev

現在のターミナルから新しいターミナルウィンドウを開くコマンド?

分類Dev

ターミナルから「コマンドの実行」プロンプトを開く

分類Dev

ターミナルを開くときに特定のコマンドを実行する方法

分類Dev

ターミナルを開くときにコマンドを自動的に実行する

分類Dev

ターミナルを開いたときにコマンドを自動的に実行する(Linux Mint 16)

分類Dev

指定されたパスへのターミナルを開くためのコマンド

分類Dev

ターミナルを開かずにターミナルコマンドを実行する

分類Dev

ターミナルを開かずにターミナルコマンドを実行する

Related 関連記事

  1. 1

    現在のターミナルで新しいタブを開くコマンド

  2. 2

    現在のターミナルで新しいタブを開くコマンド

  3. 3

    Safariを開くためのターミナルコマンド

  4. 4

    ターミナルを開かずにターミナルコマンドを実行する-Linux

  5. 5

    ターミナルコマンドを使用してnautilusで「スター付き」カテゴリを開く方法

  6. 6

    Macターミナルの検索と開くコマンド

  7. 7

    ターミナルコマンドを使用してChromeの履歴を開く

  8. 8

    ubuntu 16.04の「ターミナルで開く」コマンドは、変更されたディレクトリでターミナルを開きません

  9. 9

    ターミナルコマンドからGenymotionデバイスを開くことはできますか?

  10. 10

    ターミナルはmatlabを開くだけで、コマンドは実行しません

  11. 11

    スクリプトまたはコマンドを使用して Linux ターミナルで複数の画面を開く

  12. 12

    ターミナルからのコマンドでleinreplを開始します

  13. 13

    Javaでターミナルウィンドウを開く

  14. 14

    ターミナルコマンドを使用してフォルダからファイルを開く方法

  15. 15

    新しいSafariウィンドウを開くためのターミナルコマンド

  16. 16

    コマンドラインから新しいターミナルタブを開く(Mac OS X)

  17. 17

    C#Linuxでターミナルコマンドを実行する

  18. 18

    JavaからターミナルでLinuxコマンドを実行する

  19. 19

    新しいクロムタブを開くためのターミナルコマンド

  20. 20

    新しいクロムタブを開くためのターミナルコマンド

  21. 21

    現在のターミナルから新しいターミナルウィンドウを開くコマンド?

  22. 22

    現在のターミナルから新しいターミナルウィンドウを開くコマンド?

  23. 23

    ターミナルから「コマンドの実行」プロンプトを開く

  24. 24

    ターミナルを開くときに特定のコマンドを実行する方法

  25. 25

    ターミナルを開くときにコマンドを自動的に実行する

  26. 26

    ターミナルを開いたときにコマンドを自動的に実行する(Linux Mint 16)

  27. 27

    指定されたパスへのターミナルを開くためのコマンド

  28. 28

    ターミナルを開かずにターミナルコマンドを実行する

  29. 29

    ターミナルを開かずにターミナルコマンドを実行する

ホットタグ

アーカイブ