我需要从controller执行shell命令,但不仅要对项目中的文件执行ex。系统('rm /var/www/html/test.html')或系统('sudo解压缩/var/www/html/test.zip'); < / p>
我调用了函数,但是什么也没有发生,怎么知道如何从控制器执行外部shell命令,例如删除另一个目录中的一个文件?
system('rm /var/www/html/test.html');
//or
exec('rm /var/www/html/test.html')
答案 0 :(得分:0)
如果要从PHP应用程序运行命令,建议使用Symfony Process Component:
composer require symfony/process
use Symfony\Component\Process\Process;
将类导入文件中执行命令:
$process = new Process(['rm', '/var/www/html/test.html']);
$process->run();
或者,(如果运行php的进程具有正确的权限),您可以简单地使用PHP的unlink()函数删除文件:
unlink('/var/www/html/test.html');
答案 1 :(得分:0)
我将使用框架已提供的功能来做到这一点:
1)首先生成命令类:
php artisan make:command TestClean
这将在App \ Console \ Commands中生成命令类
然后在该命令类的handle方法内编写:
@unlink('/var/www/html/test.html');
为命令命名和描述并运行:
php artisan list
只是确认您的命令已列出。
2)在您的控制器中导入Artisan门面。
use Artisan;
3)在您的控制器中,然后输入以下内容:
Artisan::call('test:clean');
有关更多用途,请参考文档: https://laravel.com/docs/5.7/artisan#generating-commands