コンピューター サイエンスにおいて、SHELL が DOS の command.com に似ていることは誰もが知っています。ユーザーコマンドを受信し、対応するアプリケーションを呼び出します。同時に、それはプログラミング言語です
コマンド言語として、ユーザーが入力したコマンドを対話的に解釈して実行したり、プログラミング言語として一連のプリセットコマンドを自動的に解釈して実行したり、さまざまな変数やパラメーターを定義します。また、ループや分岐など、高級言語でのみ見られる多くの制御構造を提供します。
PHPが長い間発展してきたので、多くのユーザーはPHPをよく知っています。ここで私の個人的な理解を表明し、皆さんと議論します。ほとんどの場合、すべてに exec() コマンドとデータ配列を使用します。または、特に結果を気にしない場合は、より単純なコマンドに shell_exec() を使用します。 PHP シェル スクリプトを返す必要があるだけの場合は、 passthru() を使用します。さまざまな機会に異なる機能を使用することが多く、場合によってはそれらを交換可能です。
それはすべて私の気分と私が達成したいことによって異なります。もう 1 つの質問は、「彼らの強みは何ですか?」ということです。まったく手がかりがない場合、またはシェル コマンドを使用するのに最適なプロジェクトはあるものの、その使用方法がわからない場合は、ここでいくつかの洞察を提供します。さまざまなバックアップ機能やファイル転送機能を提供するアプリケーションを作成している場合は、shell_exec() またはここで提供されている他のコマンドのいずれかを使用して、rsync がサポートされている PHP シェル スクリプトを実行することを選択できます。 PHP シェル スクリプトを作成して必要な rsync コマンドを組み込み、passthru() を使用してユーザーのコマンドまたは cron ジョブに基づいて実行できます。
たとえば、アプリケーションで適切な権限(管理者権限など)を持つユーザーが、あるサーバーから別のサーバーに 50 個の PDF ファイルを送信したいとします。次に、ユーザーはアプリケーション内の正しい場所に移動し、「転送」をクリックし、送信する必要がある PDF を選択して、「送信」をクリックする必要があります。その過程で、フォームには、次に示すように return オプション変数を使用して passthru() 経由で rsync スクリプトを実行する PHP スクリプトが含まれる必要があります。
リスト 1. passthru() 経由で rsync スクリプトを実行するためのサンプル PHP スクリプト
コードは次のとおりです:
<?php passthru('xfer_rsync.sh',$returnvalue); if ($returnvalue != 0){ //we have a problem! //add error code here }else{ //we are okay //redirect to some other page } ?>
アプリケーションがプロセスやファイル、あるいはこれらのプロセスやファイルに関するデータをリストする必要がある場合は、以下を使用できます。この記事では、この目的を簡単に達成できるコマンドの 1 つを要約します。たとえば、単純な grep コマンドは、特定の search 条件に一致するファイルを見つけるのに役立ちます。これを exec() コマンドとともに使用すると、結果が配列に保存され、HTML テーブルまたはフォームを構築できるようになり、さらに他のコマンドを実行できるようになります。
これまで、ユーザー生成の イベント について説明してきました。ユーザーがボタンを押すかリンクをクリックするたびに、PHP は対応するスクリプトを実行します。スタンドアロンの PHP スクリプトを cron または他のスケジューラーとともに使用して、興味深い効果を実現することもできます。たとえば、バックアップ スクリプトがある場合は、cron 経由で実行したり、PHP スクリプトにパッケージ化して実行したりできます。
なぜこれを行うのですか? 冗長だと思われませんか? そうではありません。このように考える必要があります。exec() または passthru() を介してバックアップ スクリプトを実行し、それに基づいて何らかの動作を実行できます。リターンコード。エラーが発生した場合は、エラー ログまたはデータベースにログを記録したり、警告電子メールを送信したりできます。スクリプトが成功した場合は、生の出力をデータベースにダンプできます (たとえば、rsync には冗長モードがあり、後で問題を診断するのに役立ちます)。
セキュリティ
ここでセキュリティについて簡単に説明します。ユーザー入力を受け入れて情報をシェルに渡す場合は、ユーザー入力をフィルターすることをお勧めします。 sudo (スーパーユーザーとして実行) や rm (削除) など、有害と考えられるコマンドや許可されていないコンテンツを削除します。実際には、おそらくユーザーにオープンリクエストを送信させるのではなく、リストから選択させることを望んでいるでしょう。 たとえば、ファイルのリストを引数として受け取る転送プログラムを実行する場合、一連の
チェックボックスを使用してすべてのファイルをリストする必要があります。ユーザーは、[送信] をクリックしてファイルを選択および選択解除し、rsync シェル スクリプトをアクティブ化できます。ユーザーは自分でファイルを入力したり、正規表現を使用したりすることはできません。 この記事ではPHPシェルスクリプトの使い方を2つの側面から紹介していますので、お役に立てれば幸いです。
以上がPHPでシェルスクリプトを使用する方法のコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。