shell_exec();
PHP では、シェル ファイルを処理する関数を使用できます。popen()
ただし、オペレーティング システムが Windows の場合は、および関数の使用を検討する必要がありますpclose()
。これは、パイプがテキスト モードで実行され、通常はバイナリ出力が妨げられるためです。
ファイルshell.php
に 2 つのスクリプトを実装します。shell_exec();
まず、「ファイルを開く」機能を使用します.sh
。
次に、 を使用してshell_exec()
cmd インターフェイスを開き、いくつかの Windows コマンドを実行します。
[shell_exec()
シェルファイルをテキストモードで実行する場合に使用します]
関数の構文とパラメーター: shell_exec(string $cmd);
。この関数はシェル出力を文字列形式で返します。
demo.sh
このチュートリアルではデモ ファイルを作成しました。
コード ( demo.sh
):
#!/bin/sh
echo "Hello world";
echo "This is a shell .sh file for demo";
// your shell commands go here
任意のテキスト エディタを使用してファイルを作成し.sh
、.sh
ファイル拡張子を付けて保存できます。その後、shell.php
テキスト モードで文字列形式をスローするため、次の PHP スクリプト ( ) を実行してメモ帳で開きます。
<!DOCTYPE html>
<head>
<title>
Run Shell File in PHP and open CLI (shell) to run shell scripts
</title>
</head>
</head>
<form action="shell.php" method ="post" align="center">
<input type="submit" value="Open .sh file using shell_exec() in PHP" name="openshellfile" />
<input type="submit" value="Run cmd/shell on Windows using shell_exec() in PHP" name="opencmd" />
</form>
</body>
</html>
<?php
// When user submits the form
if(isset($_POST['openshellfile'])){
echo $res=shell_exec('PATH to the file/demo.sh');
}
?>
出力:
[CLI で使用してshell_exec()
バイナリ形式を返す]
shell_exec()
関数はさまざまな機能に使用できます。私たちのアプローチは、shell_exec()
バックグラウンドで関数を実行することなく使用できる優れた方法です。
popen()
または を使用する必要もありませんpclose()
。
<?php
// Ping facebook cmd (shell)
// open cmd shell
if (isset($_POST['opencmd']))
{
//You do not need to use popen() or pclose() either to run this shell command
// 您可以在此处添加任何命令,
//例如,您可以控制您的窗口 (CLI)
//您只会在 cmd.ex /k “您的命令”之后更改命令
$open = shell_exec('start cmd.exe /k ping "facebook.com"');
echo $open;
//function shell($open) {
//检查您的 PHP 版本
}
?>
スクリプトを使用して任意のコマンドを実行できますが、ping のみを実行しますfacebook.com
。たとえば、この機能を使用して電卓を開きたい場合は、calc
代わりに「 」と入力しますping "facebook.com"
。
上記のコードを PHP スクリプトに追加する前に、まず HTML の入力フィールドの名前を変更する必要があります。次に、上記のコードをshell.php
前に実行したファイルに追加します。
コマンドのスコープは何でもよく、任意の Windows コマンドを入力して$open
変数に割り当てることができます。このスクリプトは、コマンドを Windows シェル (この例では CLI) に直接実行します。
出力:
上記のコードでは、shell_exec();
cmd コマンドを実行して ping を実行していました。facebook.com
ただし、関数パラメータに任意のコマンドを入力すると機能します。