0
我试图通过CLI使用exec命令来调用CodeIgniter控制器,以便在不等待服务器回复的情况下发送电子邮件。通过CLI的CodeIgniter执行控制器
但是,这根本不起作用,我不明白为什么。
的过程中用户控制器开始与库调用
$this->load->library('Mailer');
...
$this->mailer->send_user_email($email,$token);
的$email
与%20
更换@
发送,从而CI可以在接受它作为有效的URL
然后梅勒库的代码如下
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
我怎样才能解决这个问题呢?
你应该在任何情况下使用'escapeshellarg($电子邮件)'和' escapeshellarg($ token)'来防止shell命令注入。也许这会修复错误。 – hek2mgl 2013-04-30 15:50:35
Nicelly指出,但是,不,没有解决任何问题 – 2013-04-30 15:53:27
你打电话给控制器怎么样?从命令行或浏览器? – raidenace 2013-04-30 15:53:52