我使用CodeIgniter構建了一個雙語應用程序,現在我需要2個cron作業將電子郵件發送給某些用戶。雙語CodeIgniter cron作業
我遇到的問題是我無法運行cron作業,我相信這是因爲我必須以多種語言運行CodeIgniter。
我試圖運行這個命令: PHP /家/ [用戶名] /的public_html /項目/ [項目名稱]的index.php的cron提醒
我得到的電子郵件運行後,以下內容:
Content-type: text/html
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: array_key_exists() [<a href='function.array-key-exists'>function.array-key-exists</a>]: The first argument should be either a string or an integer</p>
<p>Filename: core/MY_Lang.php</p>
<p>Line Number: 153</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: array_key_exists() [<a href='function.array-key-exists'>function.array-key-exists</a>]: The first argument should be either a string or an integer</p>
<p>Filename: core/MY_Lang.php</p>
<p>Line Number: 153</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: Cannot modify header information - headers already sent by (output started at /home/vchris/CI-2.0.1/core/Exceptions.php:170)</p>
<p>Filename: core/MY_Lang.php</p>
<p>Line Number: 73</p>
</div>
MY_Lang.php 頭是上線73
if ((!$url_ok) && (!$this->is_special($uri_segment['parts'][0]))) // special URI -> no redirect
{
// set default language
$CFG->set_item('language', $this->languages[$this->default_lang()]);
$uri = (!empty($this->uri)) ? $this->uri: $this->default_uri;
$uri = ($uri[0] != '/') ? '/'.$uri : $uri;
$new_url = $CFG->config['base_url'].$this->default_lang().$uri;
header("Location: " . $new_url, TRUE, 302);
exit;
}
MY_Lang.php 返回是上線153
// default language: first element of $this->languages
function default_lang()
{
$browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : '';
$browser_lang = substr($browser_lang, 0,2);
return (array_key_exists($browser_lang, $this->languages)) ? $browser_lang: 'en';
}
基本上當您瀏覽我的網站,如果你沒有在URL中設置一種語言,它會自動添加/ EN /。有沒有辦法繞過或在控制器中設置它?我認爲MY_Lang在控制器之前被調用。所以也許有辦法做到這一點,所以我不必使用index.php來輸入CodeIgniter。
感謝您的回覆。 使用wget作爲cron作業,是不是就像我會查看該頁面?我不希望任何人能夠查看控制器/方法。 – Chris 2012-01-31 20:39:13
是的,我想這不是你想要的,但是想把它當作另一種選擇。你可以使用某種祕密密鑰作爲wget請求中的參數,並將其與控制器方法中的硬編碼值進行比較。再次,不理想,但另一種選擇。 – gstjohn 2012-01-31 21:07:45
我試着用default_lang()方法改變它,除了我要去的默認控制器而不是cron控制器。 wget與param可能是一種做法。 – Chris 2012-02-01 13:39:56