Laravel 5.2 - 如何通过Modal / Controller运行shell命令

时间:2017-11-08 16:08:18

标签: php linux laravel-5

如何通过模型或控制器运行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);

请帮忙!

2 个答案:

答案 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还有一件事是不好的做法。