在 PHP 中執行 Shell 指令碼並開啟 Shell 檔案
PHP 允許我們使用 shell_exec();
處理 shell 檔案的函式。然而,如果你的作業系統是 Windows,你應該考慮使用 popen()
和 pclose()
函式,因為管道是在文字模式下執行的,這通常會阻止它的二進位制輸出。
我們將在我們的 shell.php
檔案中實現兩個指令碼。首先,我們將使用 shell_exec();
開啟 .sh
檔案功能。
然後,我們將使用 shell_exec()
開啟 cmd 介面並執行一些 windows 命令。
使用 shell_exec()
在文字模式下執行 Shell 檔案
函式語法和引數:shell_exec(string $cmd);
。此函式以字串格式返回 shell 輸出。
我們在本教程中建立了一個演示 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
副檔名儲存它。之後,請執行以下 PHP 指令碼(shell.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
// you can add any command here, it will work!
//For example, you can control your Windows (CLI)
//You will only change the command after cmd.ex /k "Your Command"
$open = shell_exec('start cmd.exe /k ping "facebook.com"');
echo $open;
//function shell($open) {
//check your php version
}
?>
雖然我們可以使用我們的指令碼執行任何命令,但我們只 ping 了 facebook.com
。例如,如果你想通過此功能開啟一個計算器,請輸入 calc
而不是 ping "facebook.com"
。
在你的 PHP 指令碼中新增上述程式碼之前,你首先需要更改 HTML 中輸入欄位的名稱。然後將上面的程式碼新增到我們之前執行的 shell.php
檔案中。
命令的範圍可以是任何東西,你可以鍵入任何 windows 命令並將其分配給 $open
變數。該指令碼會將你的命令直接執行到 Windows shell(本示例中為 CLI)。
輸出:
我們使用 shell_exec();
執行了一個 cmd 命令來 ping facebook.com
在上面的程式碼中。但是,你可以在函式引數中鍵入任何命令,它將起作用。
Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.
LinkedIn