[英]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
—創建一個支持雙向可讀寫的新進程
對於您的腳本,我會結合使用popen
和pclose
因為我認為您不需要腳本輸出。
pclose(popen("scrapy crawl example -a siteid=$id > /dev/null &", 'r'));
$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.