如何通过模型或控制器运行shell命令。不是通过Artisan命令或$ schedule。
还有我如何运行sudo命令?
我尝试了下一个选项。没有任何作用:
1:
$process = new Process('sudo /usr/bin/touch /var/www/html/Poptin test2.html');
$process->run();
// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
2:
shell_exec(escapeshellcmd('sudo /usr/bin/touch /var/www/html/Poptin test2.html));
3:
exec('sudo /usr/bin/touch /var/www/html/Poptin test2.html);
请帮忙!
答案 0 :(得分:3)
刚刚在Laravel 5.5中测试了运行exec,它确实有效。 这就是我的尝试:
$test = exec('echo 123');
dd($test);
我知道你正在运行5.2,但运行它的条款应该没有什么不同。
我可以看到你在exec方法和shell_exec中忘记了一个结尾。
而不是写
exec('sudo /usr/bin/touch /var/www/html/Poptin test2.html);
你应该写
exec('sudo /usr/bin/touch /var/www/html/Poptin test2.html');
还要确保在shell中直接运行它时,您尝试运行的命令有效。
答案 1 :(得分:2)
你所做的是正确的,但你必须这样做 例如 shell_exec('sudo / usr / bin / touch / var / www / html / Poptin test2.html')试一试,在控制器中使用shell_exec还有一件事是不好的做法。