簡體   English   中英

如何從PHP腳本執行Shell

[英]How to execute shell from php script

我想從php腳本執行此命令

scrapy crawl example -a siteid=100

我嘗試了這個:

<?php
$id = 100;
exec('scrapy crawl example -a siteid= $id' $output, $ret_code);
?>

嘗試這個:

<?php
$id = 100;
exec('scrapy crawl example -a siteid=$id 2>&1', $output);
return $output;
?>

實際上,您需要重定向輸出以獲得它。

如果不需要輸出,而只是執行命令,則只需要第一部分,如下所示:

exec('scrapy crawl example -a siteid=' . $id);

因為您沒有將參數放在''內,所以將其放在外面,請閱讀有關PHP中的文本concat的信息。

根據您是否需要腳本的輸出,有不同的方法。

  • exec執行命令並將輸出返回給調用方。

  • 當Unix命令的輸出是二進制數據,需要直接傳遞回瀏覽器時,應該使用passthru函數代替exec。

  • system執行外部程序並顯示輸出,但僅顯示最后一行。

  • popen創建一個單向可讀/可寫的新進程

  • proc_open —創建一個支持雙向可讀寫的新進程

對於您的腳本,我會結合使用popenpclose因為我認為您不需要腳本輸出。

pclose(popen("scrapy crawl example -a siteid=$id > /dev/null &", 'r'));

PHP手冊-shell_exec()

$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";

簡而言之,有一個本地PHP命令可以執行您想要的操作。 您也可以在Google上搜索exec() ,這是一個類似的函數。

phpseclib-http://phpseclib.sourceforge.net/下載,並將其包含在您的項目中。

include('Net/SSH2.php');

$ssh = new Net_SSH2("Your IP Here");
if (!$ssh->login('Your User', 'Your Password')) {
    exit('Login Failed');
}
$id = 100;
echo "<pre>";
print_r($ssh->exec('scrapy crawl example -a siteid= $id'));

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM