在 Node.js 中調用 PHP 腳本可以通過創建子進程來實現。你可以使用 child_process
模塊中的 exec
或 spawn
函數來執行 PHP 命令并與之交互。
以下是一個使用 exec
函數的示例:
const { exec } = require('child_process');
// 定義要執行的 PHP 腳本
const phpScript = `
<?php
echo "Hello from PHP!";
?>
`;
// 將 PHP 腳本保存到一個臨時文件中
require('fs').writeFileSync('temp.php', phpScript);
// 執行 PHP 腳本并獲取輸出結果
exec('php temp.php', (error, stdout, stderr) => {
if (error) {
console.error(`執行錯誤: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
// 刪除臨時文件
require('fs').unlinkSync('temp.php');
});
這個示例首先將 PHP 腳本保存到一個臨時文件中,然后使用 exec
函數執行該文件。執行完成后,我們可以從回調函數中獲取輸出結果。最后,記得刪除臨時文件。
如果你想在不創建臨時文件的情況下直接執行 PHP 代碼,可以使用 spawn
函數:
const { spawn } = require('child_process');
// 定義要執行的 PHP 腳本
const phpScript = `
<?php
echo "Hello from PHP!";
?>
`;
// 使用 echo 命令將 PHP 腳本傳遞給 PHP 解釋器
const phpProcess = spawn('echo', [phpScript], { shell: true });
// 將輸出傳遞給 PHP 解釋器
phpProcess.stdout.pipe(spawn('php', [], { stdio: 'inherit' }).stdin);
這個示例使用 spawn
函數創建了一個 echo
子進程,將 PHP 腳本作為輸入傳遞給它。然后,我們將 echo
子進程的輸出傳遞給 PHP 解釋器,從而實現了直接執行 PHP 代碼的目的。注意,這里需要設置 shell: true
選項以允許使用管道操作。