ホームページ バックエンド開発 PHPチュートリアル PHP には、システム コマンドを実行するためによく使用される関数がいくつかあります_PHP チュートリアル

PHP には、システム コマンドを実行するためによく使用される関数がいくつかあります_PHP チュートリアル

Jul 13, 2016 pm 04:57 PM
php 関数 注文 埋め込む 使用 システム

PHP には、system 関数、exec 関数、popen 関数、passthru、shell_exec 関数など、システム コマンドを実行するためによく使用される関数がいくつかあります。これらはすべてシステム コマンドを実行できますが、前提条件はシステムによって与えられた権限である必要があります。

システム機能

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

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

コード例:

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

$last_line = system("ls", $retval);
echo "出力の最後の行: " . $last_line;
echo "


戻り値: " . $retval;
?>

実行関数
説明: 外部プログラムを実行します。
構文: string exec(string コマンド, string [array], int [return_var]);
戻り値: 文字列

詳しい紹介:
外部プログラムまたは外部命令入力コマンドを実行する機能です。戻り文字列は、外部プログラムの実行後に返される最後の行のみです。完全な戻り文字列が必要な場合は、PassThru() 関数を使用できます。

パラメータ配列が存在する場合、コマンドはその配列をパラメータに追加して実行します。配列を処理したくない場合は、exec() を実行する前に unset() を呼び出すことができます。 return_var と配列パラメータの両方が存在する場合、コマンド実行後のステータスが return_var に設定されます。

ユーザーが入力したデータを処理し、ユーザーがシステムをクラックするためのトリックを行うのを防ぐ必要がある場合は、EscapeShellCmd() を使用できることに注意してください。

コード例:

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

echo exec("whoami");
?>

ポップオープン機能
説明: ファイルを開きます。
構文: int Popen(文字列コマンド, 文字列モード);
戻り値: 整数

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


コード例:

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


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


関数パススルーを使用して外部システムコマンドを実行します

プロトタイプ: 関数 passthru(string $command,int[optional] $return_value)

知識ポイント: パススルーとシステムの違い パススルーは値を返さずに結果をブラウザに直接出力し、画像データなどのバイナリを出力できます。

方法 4: バックティック` (および同じキー内の ~) を使用して外部システム コマンドを実行します

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


echo `dir`;
?>

知識ポイント: このメソッドを使用して外部システム コマンドを実行する場合は、shell_exec 関数が使用可能であることを確認する必要があります。そうでない場合、このバックティックを使用して外部システム コマンドを実行することはできません。

安全上の注意事項

これらの関数を使用してコマンドを実行する場合、ユーザーが送信したデータに基づいてコマンドを実行する場合は、システムのセキュリティを考慮する必要があります。escapeshellcmd() 関数とscapeshellarg() 関数を使用すると、ユーザーがシステム上でコマンドを悪意をもって実行するのを防ぐことができます。 .escapeshellcmd() は実行されたシステム コマンド用であり、escapeshellarg() は実行されたシステム コマンドのパラメータ用です。これら 2 つのパラメータは、addslashes() の関数に似ています。


次に、システムコマンドを実行するカスタム関数を見てみましょう

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

関数実行($cfe) {
$res = “;
if ($cfe) {
if(function_exists(‘システム’)) {
@ob_start();
@システム($cfe);
$res = @ob_get_contents();
@ob_end_clean();
elseif(function_exists(‘パススルー’)) {
@ob_start();
@パススルー($cfe);
$res = @ob_get_contents();
@ob_end_clean();
elseif(function_exists(‘shell_exec’)) {
$res = @shell_exec($cfe);
elseif(function_exists(‘exec’)) {
@exec($cfe,$res);
$res = join(“n”,$res);
elseif(@is_resource($f = @popen($cfe,”r”))) {
$res = “;
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
$res を返します;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631536.html技術記事 PHP には、system 関数、exec 関数、popen 関数、passthru、shell_exec 関数など、システム コマンドを実行するためによく使用される関数がいくつかあります。これらはすべてシステム コマンドを実行できますが、前提条件は system...
である必要があります。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles