2011-06-01 61 views
1

我正在嘗試創建一個cron作業,同時利用我當前的CI設置和控制器和模型的使用。我使用的是Cron Bootstrapper(http://codeigniter.com/wiki/Cron_job_bootstrapper/),因爲它使我能夠輕鬆訪問本地按需測試流程,或者在服務器上作爲傳統cron流程提供。我可以使用引導程序文件和命令行訪問控制器,但是,根據我如何設置控制器,我收到了許多不同的錯誤消息或警報。Codeignitor和Cron Bootstrapper的問題

如果我繼續,因爲它應該與parent::Controller();控制器,我得到以下信息:

Unable to connect to your database server using the provided settings.

錯誤從DB_driver.php initialize()方法來。

如果我從控制器中刪除調用parent::Controller()然後我得到以下警告:

<p>Severity: Warning</p> 
    <p>Message: date(): It is not safe to rely on the system's timezone settings. You 
     are *required* to use the date.timezone setting or the 
     date_default_timezone_set() function. In case you used any of those 
     methods and you are still getting this warning, you most likely misspelled 
     the timezone identifier. We selected 'America/New_York' for 
     'EDT/-4.0/DST' instead</p> 
    <p>Filename: htdocs/cron.php</p> 
    <p>Line Number: 122</p>` 

通過消除parent::Controller();我不能夠通過$this->load->model('model');訪問任何模型和我得到以下信息:

Fatal error: Call to a member function model() on a non-object in /Applications/MAMP/htdocs/my_site/system/application/controllers/cron.php on line 9

任何信息,將允許我使用引導程序文件與CI將是非常有益的。

回答

2
  1. 設置$ db ['default'] ['db_debug'] = TRUE;在您的數據庫配置文件中啓用更詳細的錯誤報告。

  2. 您需要注意時區警告並在您的php.ini文件中設置默認值。這是PHP 5.3的新要求。如果您在共享服務器上運行並且無法訪問php.ini,則可以請求您的虛擬主機設置默認值,或者您可以嘗試使用引導程序文件頂部的ini_set()手動設置它。

  3. 檢查並查看您的數據庫配置文件是否正在加載,如果是,請仔細檢查您的數據庫連接設置。如果設置正確,防火牆可能會阻止您,或者您所連接的數據庫用戶可能沒有權限訪問您嘗試使用的數據庫。

+0

謝謝Jonathon。 #1已經設置。 #2也被設置了,但是MAMP覆蓋了它(我用'date_default_timezone_set(「America/New_York」);'修復了它)。在我檢查#3時,我發現它也都是正確的,但是發現另一個用戶同樣的問題,改變PHP的路徑也有訣竅,再次感謝。 – tohare 2011-06-07 12:46:14