ホームページ php教程 php手册 PHP を使用してシステム上で外部コマンドを実行する 4 つの方法

PHP を使用してシステム上で外部コマンドを実行する 4 つの方法

Jun 21, 2016 am 08:53 AM
exec nbsp php system

ファイルを削除する方法に関する PHP ファイル関数のチュートリアルでは、unlink 関数を使用してファイルを削除する方法と、system 関数を介してシステム コマンドを呼び出して実行する方法の 2 つがあると述べました。ファイル削除コマンド 実際、PHP にはシステム関数以外にもコマンドを実行する方法がたくさんあります。ここでは、PHP Web サイト開発で最も一般的に使用される 4 つのコマンドを実行します。

準備

セキュリティ上の理由から、通常の状況では、仮想ホスト、XAMPP、DedeAMPZ、およびその他の PHP オペレーティング環境がシステムの外部コマンドを呼び出すことは禁止されています。したがって、PHP の機能を使用してコマンドを実行し、システムの外部コマンドを呼び出す必要がある場合は、PHP 実行環境がコマンドを実行するための PHP の機能をサポートしていることを確認する必要があります。

XAMPP または DedeAMPZ を使用している場合、通常、PHP コマンドを実行する関数の実行はデフォルトで禁止されています。php.ini 設定ファイルの disable_functions 項目から使用する関数を削除して、Apache を再起動します。 。私は DedeAMPZ を使用しているので、exec()、passthru()、system()、shell_exec() の 4 つの関数を削除しました。 PHP の実行環境を構成するにはどうすればよいですか?

PHP オペレーティング環境が自分で設定されている場合、デフォルトの php.ini 設定ファイルは外部コマンドを実行する関数の呼び出しを禁止しません。 もちろん、セキュリティ上の理由から、外部コマンドを実行する一部の関数の呼び出しを禁止する必要があります。システムの関数で disable_functions を見つけ、次のように設定します:

disable_functions = exec,system,passthru,shell_exec

つまり、これら 3 つの関数の実行は禁止されており、各関数はカンマで区切られています。 PHP.INI を設定するにはどうすればよいですか?

バーチャルホストを使用している場合は、PHP 環境が PHP を使用してコマンドを実行する機能をサポートしているかどうかをホスティングプロバイダーに問い合わせる必要があります。

その他の指示:

私は Windows システムを使用しているため、このチュートリアルの例では主に Windows システムからの外部コマンドの呼び出しに焦点を当てています。Linux の操作に慣れている場合は、Linux システムで Linux コマンドを実行してみるとよいでしょう。

PHP でコマンドを実行する 4 つの方法

方法 1: exec 関数を使用してシステムから外部コマンドを実行します

プロトタイプ: function exec(string $command,array[optional] $output,int[optional] $return_value)

1
2
3
4


exec("dir",$outPut);
print_r($outPut);
?>

1
2
3
4

< br/> exec("dir"

,

$outPut);


print_r

($outPut)

<スパンクラス="sy0">;


?>

1
2
3


system("dir");
?>

説明: PHP 実行ファイルと同じディレクトリ内のすべてのディレクトリとファイルの情報を一覧表示します。 知識ポイント: exec がシステムの外部でコマンドを実行する場合、結果は出力されません。結果を取得したい場合は、その代わりに結果の最後の行が返されます。 2 番目のパラメーターを使用して、指定された配列に出力できます。この配列内の 1 つのレコードは 1 行の出力を表します。つまり、出力結果が 20 行ある場合、この配列には 20 レコードが含まれるため、繰り返し出力する必要がある場合に使用します。さまざまなシステム外部コマンドを呼び出した結果を出力する場合は、混乱を避けるために結果をコマンドするときにこの配列をクリアして、各システム外部を出力することをお勧めします。 3 番目のパラメータは、コマンド実行のステータス コードを取得するために使用されます。通常、実行が成功した場合は 0 が返されます。 方法 2: system 関数を使用して外部システム コマンドを実行します プロトタイプ: function system(string $command,int[optional] $return_value)
1
2
3


システム<🎜>(<🎜>"dir"<🎜>)<🎜> ;<🎜>
?>

知識ポイント: system と exec の違いは、system がシステムの外部でコマンドを実行すると、コマンドが正常に実行された場合は結果をブラウザーに直接出力することです。それ以外の場合は false を返します。 2 番目のパラメータは、exec の 3 番目のパラメータと同じ意味を持ちます。

方法 3: 関数 passthru を使用して外部システム コマンドを実行します

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

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

方法 4: バックティック ` (~ と同じキー) で外部システム コマンドを実行します

1
2
3


echo `dir`;
?>

1
2
3


エコー `ディレクトリ`;
?>

知識ポイント

: この方法を使用して外部システム コマンドを実行する場合は、shell_exec 関数が使用可能であることを確認する必要があります。使用できない場合、このバッククォートを使用して外部システム コマンドを実行することはできません。

安全上の注意

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

その他の指示

実行コマンドの戻り結果が非常に大きい場合、戻り結果を別のファイルに出力し、そのファイルを個別に読み取ることを検討すると、プログラムの実行効率が大幅に向上します。それが

1
2
3


system("dir > leapsoulcn.txt");
?>

です

1
2
3


システム("dir > Leapsoulcn.txt");
?>

: ここでシステムがコマンドを実行すると、結果がブラウザに直接出力されず、指定されたディレクトリ内のファイルに出力されるため、プログラムの実行効率が大幅に向上します。 この時点で、PHP でコマンドを実行する 4 つの最も一般的に使用されるメソッド、exec()、passthru()、system()、shell_exec() と、それらの違いが PHP Web サイト開発で導入されました。状況に応じて合理的に活用できるシステム外部コマンドは非常に便利です。


注意
: PHP Web サイト開発チュートリアル-leapsoul.cn 転載の際は、元のソースとこの記述をリンクの形で明記してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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