我認爲問題是路徑。無論如何,你應該考慮不使用Process
來調用Symfony命令。控制檯組件允許調用命令,例如在控制器中。從文檔
例子:
// src/Controller/SpoolController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\KernelInterface;
class SpoolController extends Controller
{
public function sendSpoolAction($messages = 10, KernelInterface $kernel)
{
$application = new Application($kernel);
$application->setAutoExit(false);
$input = new ArrayInput(array(
'command' => 'swiftmailer:spool:send',
// (optional) define the value of command arguments
'fooArgument' => 'barValue',
// (optional) pass options to the command
'--message-limit' => $messages,
));
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
$content = $output->fetch();
// return new Response(""), if you used NullOutput()
return new Response($content);
}
}
使用這種方式你確定代碼將總是工作。當PHP處於安全模式時(exec
等被關閉)Process
組件是無用的。此外,您不需要關心路徑和其他事情,否則您所稱的「手動」命令就是命令。
你可以閱讀更多關於從控制器here調用命令。
「不起作用」是什麼意思?有沒有錯誤信息? –