[英]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.