Всем привет.
Возник затык с работой собственной функции с запуском из крона.
Эта функция обновляет кастомную валюту, которая привязана к курсу доллара (округляет текущий курс доллара до целого значения).
Проблема в том, что из командной php строки функция работает отлично, а вот при запуске из крона не работает вообще: курс не создается и не обновляется.
Обнаружил что не срабатывает API-метод CCurrencyRates::GetList. При дальнейшем изучении кода метода (файл bitrix/modules/currency/general/currency_rate.php) ввыяснилось, что проблема в методе
CharToDateFunction
в фрагменте кода
$DB->CharToDateFunction($DB->ForSql($val), "SHORT")
Файл метода CharToDateFunction: bitrix/modules/main/classes/general/database.php
Вот эта строка дает ошибочный формат даты:
$format = ($strType == "FULL" ? $culture->getFormatDatetime() : $culture->getFormatDate());
Из командной php строки она выдает DD.MM.YYYY
Из агента она выдает MM/DD/YYYY
Формат даты берется из переменной $culture, а сама переменная $culture задается в методе таким образом: $culture = $context->getCulture()
И уже из $culture агент на кроне берет дату в таком формате, что метод CCurrencyRates::GetList не может работать.
То есть при запуске из крона создается некорретная переменная $context и далее $culture.
Техподдержка Битрикса кивает на хостинг, а хостинг кивает на техподдержку Битрикса. )
Как можно исправить данный момент?
Заранее всем спасибо!