如何从laravel控制器执行外部shell命令?

Ano*_*onS 10 php linux shell controller laravel

我需要从控制器执行 shell 命令,但不仅限于项目内的文件,例如。system( 'rm /var/www/html/test.html' ) 或 system( 'sudo unzip /var/www/html/test.zip' );

我调用了该函数但什么也没发生,知道如何从控制器执行外部 shell 命令,例如删除另一个目录中的一个文件吗?

system('rm /var/www/html/test.html');
//or
exec('rm /var/www/html/test.html')
Run Code Online (Sandbox Code Playgroud)

Rwd*_*Rwd 22

如果您想从 PHP 应用程序运行命令,我建议使用Symfony Process Component

  1. composer require symfony/process

  2. 将类导入到您的文件中 use Symfony\Component\Process\Process;

  3. 执行你的命令:

    $process = new Process(['rm', '/var/www/html/test.html']);
    
    $process->run();
    
    Run Code Online (Sandbox Code Playgroud)

如果你使用的是 Laravel,你应该可以跳过第 1 步。


或者,(如果运行 php 的进程具有正确的权限)您可以简单地使用 PHP 的unlink()函数来删除文件:

unlink('/var/www/html/test.html');
 
Run Code Online (Sandbox Code Playgroud)