我正在尝试创建一个cron作业,同时利用我当前的CI设置以及控制器和模型的使用。我正在使用Cron Bootstrapper(http://codeigniter.com/wiki/Cron_job_bootstrapper/),因为它使我可以轻松访问本地按需测试过程,或者作为服务器上的传统cron进程使用。我可以使用bootstrapper文件和命令行访问控制器,但是,根据我设置控制器的方式,我会收到许多不同的错误消息或警报。
如果我将控制器与parent::Controller();
保持一致,则会收到以下消息:
无法使用提供的设置连接到数据库服务器。
错误来自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');
访问任何模型,我收到以下消息:
致命错误:在第9行的/Applications/MAMP/htdocs/my_site/system/application/controllers/cron.php中调用非对象的成员函数model()
任何允许我在CI中使用bootstrapper文件的信息都会非常有用。
答案 0 :(得分:2)
在数据库配置文件中设置 $ db ['default'] ['db_debug'] = TRUE; 以启用更详细的错误报告。
您需要注意时区警告并在php.ini文件中设置默认值。这是PHP 5.3的新要求。如果您在共享服务器上运行并且无法访问php.ini,则可以请求您的Web主机设置默认值,或者您可以尝试使用引导程序文件顶部的ini_set()手动设置它。
检查并查看是否正在加载数据库配置文件,如果是,请仔细检查数据库连接设置。如果设置正确,可能会有防火墙阻止您,或者您正在连接的数据库用户可能没有权限访问您尝试使用的数据库。