【问题标题】:Issues with Codeigniter and Cron BootstrapperCodeigniter 和 Cron Bootstrapper 的问题
【发布时间】:2018-05-21 15:39:36
【问题描述】:

我正在尝试创建一个 cron 作业,同时利用我当前的 CI 设置以及控制器和模型的使用。我正在使用 Cron Bootstrapper (http://codeigniter.com/wiki/Cron_job_bootstrapper/),因为它让我可以轻松地按需在本地测试进程,或者可以作为服务器上的传统 cron 进程使用。我可以使用引导程序文件和命令行访问控制器,但是,根据我设置控制器的方式,我会收到许多不同的错误消息或警报。

如果我将控制器与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-&gt;load-&gt;model('model'); 访问任何模型,并且收到以下消息:

致命错误:在第 9 行的 /Applications/MAMP/htdocs/my_site/system/application/controllers/cron.php 中的非对象上调用成员函数 model()

任何可以让我在 CI 中使用引导程序文件的信息都会非常有帮助。

【问题讨论】:

    标签: codeigniter cron


    【解决方案1】:
    1. 在您的数据库配置文件中设置 $db['default']['db_debug'] = TRUE; 以启用更详细的错误报告。

    2. 您需要注意时区警告并在 php.ini 文件中设置默认值。这是 PHP 5.3 的新要求。如果您在共享服务器上运行并且无权访问 php.ini,您可以请求您的网络主机设置一个默认值,或者您可以尝试使用引导文件顶部的 ini_set() 手动设置它。

    3. 检查您的数据库配置文件是否正在加载,如果是,请仔细检查您的数据库连接设置。如果设置正确,则可能是防火墙阻止了您,或者您正在连接的数据库用户可能无权访问您尝试使用的数据库。

    【讨论】:

    • 谢谢乔纳森。 #1 已经设置好了。 #2 也被设置了,但是 MAMP 覆盖了它(我用date_default_timezone_set("America/New_York"); 修复了它。在我搜索检查 #3 时我发现它也是正确的,但发现另一个用户有同样的问题。更改 PHP 的路径成功了。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2011-10-29
    • 2012-05-16
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多