繁体   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