我正在尝试使用 exec 命令通过 CLI 调用 CodeIgniter 控制器,以便在不等待服务器回复的情况下发送电子邮件。
但是,这根本行不通,我真的不明白为什么。
该过程在用户控制器中通过库调用开始
$this->load->library('Mailer');
...
$this->mailer->send_user_email($email,$token);
$email
发送时%20
替换为,因此 CI 可以将@
其作为有效 URL 接受
然后在Mailer Library中代码如下
chdir('/var/www/projectroot');
$command='php index.php mailing send_email '.$mail.' '.$token.' > output.txt 2> error.txt &';
exec($command);
然后在邮件控制器中应该发送邮件
$transport = Swift_SmtpTransport::newInstance(
....
echo $mailer->send($message);
我已经测试过直接在服务器命令行中调用这个控制器,它工作得很好。此外,变量中生成的字符串$command
是正确的,并且如果我手动将其提供给 CLI 也可以工作。
也没有给 output.txt 文件提供任何类型的输出,也没有给 error.txt
我该如何解决这个问题?