ホームページ  >  記事  >  バックエンド開発  >  PHP の一般的な関数を使用して Linux システム コマンドを実行する手順_PHP チュートリアル

PHP の一般的な関数を使用して Linux システム コマンドを実行する手順_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:38:34997ブラウズ

システム関数
説明: 外部プログラムを実行し、出力データを表示します。
構文: string system(string command, int [return_var]);
戻り値: string

詳細な紹介:
この関数は、C 言語の関数 system() に似ており、命令を実行して結果を出力するために使用されます。 return_var パラメータが存在する場合、return_var にはコマンド実行後のステータスが入ります。ユーザーが入力したデータを処理する必要があるが、ユーザーがシステムをクラックするためのトリックを行うのを防ぎたい場合は、EscapeShellCmd() を使用できることにも注意してください。 PHP がモジュール形式で実行される場合、この関数は出力の各行の後に Web サーバーの出力バッファを自動的に更新します。完全な文字列を返す必要があり、不必要な他の中間出力インターフェイスを経由したくない場合は、PassThru() を使用できます。


コード例:

コードをコピー コードは次のとおりです:

< ?php
$last_line = system('ls', $retval);
echo '出力の最後の行: ' . $ last_line;
echo '
戻り値: ' . $retval;

説明: 外部プログラムを実行します。
構文: string exec(string command, string [array], int [return_var]); 戻り値: string

詳細な紹介:

この関数は、外部プログラムまたは外部命令入力コマンドを実行します。戻り文字列は、外部プログラムの実行後に返される最後の行のみです。完全な戻り文字列が必要な場合は、PassThru() 関数を使用できます。
パラメータ配列が存在する場合、コマンドはその配列をパラメータに追加して実行します。配列を処理したくない場合は、exec() を実行する前に unset() を呼び出すことができます。 return_var と配列パラメータの両方が存在する場合、コマンド実行後のステータスが return_var に設定されます。
ユーザーが入力したデータを処理し、ユーザーがシステムをクラックするためのトリックを行うのを防ぐ必要がある場合は、EscapeShellCmd() を使用できることに注意してください。



コードのコピー

次のコード:
& & lt;? PHP echo Exec ('WHOAMI') 手順: ファイルを開きます。 構文: int Popen(string command, string mode);
戻り値: integer

詳細な紹介:
この関数はファイルを開く命令を実行し、ファイルはパイプラインによって処理されます。この関数で開かれたファイルは一方向 (読み取り専用または書き込み専用) のみであり、pclose() で閉じる必要があります。ファイル操作には、fgets()、fgetss()、および fputs() が使用できます。ファイルを開くときにエラーが発生した場合は、false 値が返されます。

コード例:

コードをコピーします:

<
$fp = Popen("/bin/ls","r" );




PHP による Linux サーバー負荷監視
実際のプロジェクト アプリケーションでは、さまざまな状況が現実であるため、PHP を使用してサーバー負荷監視を実装する方がより柔軟な方法になります。 Web サーバーと PHP の実装の制限により、実際の環境で実行するために root 権限が必要な一部のプログラムを PHP を使用して呼び出すのは困難です。この点を回避する別の方法を見つけました。これはインターネットの制限からです。まず、システムコマンドを転送する C プログラムを作成し、次に PHP を使用して C プログラムを実行します。
c プログラム

まず、/usr/local/ismole/w.c などの c ファイルを作成します


コードをコピーします

コードは次のとおりです:
#include stdlib.h>
#include

int main()
uid_t uid ,euid

//note 現在の uid を取得します
uid = getuid;
//note 現在の euid を取得します
euid = geteuid(); //note これら 2 つの ID を交換します if(setreuid(euid, uid)) perror("setreuid");
//note linux を実行しますsystem command
system("/usr/bin/w");
return0;
}


ファイル gcc -o w -Wall w.c をコンパイルすると、現在のディレクトリにプログラム w が生成されます。このプログラムの所有者を変更します chmod u+s ./w。
PHP実行

ファイルの内容は以下の通りで、Webディレクトリに配置され、アクセスすると現在のサーバー負荷が出力されます。



コードをコピーします

コードは次のとおりです:

/*
その他およびオリジナルの PHP フレームワーク
Copyright (c) 2007 - 2008 IsMole Inc.

$Id:serverMonitor.php 408 2008-12-02 08:07:40Z kimi $
*/

//キー検証プロセスに注意してください
if($key != $authkey) {
// exit('key error)
}

$last_line = exec('/usr/local/ismole/w', $ retval);

$returnArray =explode("load Average: ", $retval[0]);

echo $returnString; PHP を使用して、実行したい Linux システム コマンド、SVN 更新、サーバー監視、バックアップ、リカバリ、日常メンテナンスなどを実行します。


http://www.bkjia.com/PHPjc/321692.html

www.bkjia.com

http://www.bkjia.com/PHPjc/321692.html技術記事システム機能の説明: 外部プログラムを実行し、出力データを表示します。 構文: string system(string command, int [return_var]); 戻り値: string 詳細な紹介: この関数は C に似ています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。