Проблемы с Codeigniter и загрузчиком Cron

#codeigniter #cron

#codeigniter #cron

Вопрос:

Я пытаюсь создать задание cron, используя преимущества моей текущей настройки CI и использования контроллеров и моделей. Я использую загрузчик Cron (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'); , и я получаю следующее сообщение:

Неустранимая ошибка: вызов функции-члена model() для не-объекта в /Applications/MAMP/htdocs/my_site/system/application/controllers/cron.php в строке 9

Любая информация, которая позволит мне использовать файл bootstrapper с CI, будет очень полезной.

Ответ №1:

  1. Установите $ db[‘default’][‘db_debug’] = TRUE; в файле конфигурации вашей базы данных, чтобы включить более подробное сообщение об ошибках.

  2. Вам необходимо учесть предупреждение о часовом поясе и установить значение по умолчанию в вашем файле php.ini. Это новое требование, начиная с PHP 5.3. Если вы работаете на общем сервере и не имеете доступа к php.ini, вы можете либо запросить, чтобы ваш веб-хост установил значение по умолчанию, либо вы можете попробовать установить его вручную с помощью ini_set() в верхней части вашего файла начальной загрузки.

  3. Проверьте, загружается ли файл конфигурации вашей базы данных, и если да, дважды проверьте настройки подключения к базе данных. Если настройки правильные, возможно, вас блокирует брандмауэр или пользователь базы данных, к которому вы подключаетесь, может не иметь разрешения на доступ к базе данных, которую вы пытаетесь использовать.

Комментарии:

1. Спасибо, Джонатан. # 1 уже был установлен. # 2 также был установлен, но MAMP переопределяет его (я исправил это с помощью date_default_timezone_set("America/New_York"); . В моем поиске для проверки # 3 я обнаружил, что все также было правильно, но нашел другого пользователя, у которого была такая же проблема. Изменение пути к PHP сделало свое дело. Еще раз спасибо.