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