6387

Почему не работает библиотека Carbon при выводе даты в formatLocalized() на хостинге?

4 ответа

Приветствую!

Задавал этот вопрос на Тостере, но так и не получил ответ, поэтому спрошу ещё раз тут.

Есть проект на Laravel 5.3 с установленным пакетом Carbon и расширением для него – jenssegers/date. Прописываю в методе контроллера (для отображения статьи в блоге) следующее:

use Jenssegers\Date\Date; 

// ... 

setlocale(LC_TIME, 'ru_RU.UTF-8'); // Пробовал любые варианты написания 'ru_RU' Date::setLocale(config('app.locale')); // 'locale' => 'ru'

$article = Article::where('id', '=', $id)->firstOrFail();

$created_at = Date::parse($article->created_at)->formatLocalized('%e %B %Y');

return view('pages.article', compact( 'article', 'created_at' ));

// ...

На локалхосте при php artisan serve (OS X 10.11.6) – всё отображается так, как надо – 10 ноября 2016. Причём, что с библиотекой jenssegers/date, что без неё (просто Carbon-ом).

Загружаю всё это на хостинг (Таймвеб) и вижу вот такой вывод даты: 10 Ноябрь 2016 (месяц с большой буквы и в именительном падеже). Из-за чего это может быть? Как исправить?

Ответы (4)

constb 0
12.11.2016 13:19
разве jenssegers/date использует системную локаль? по-моему у него есть свой метод Date::setLocale и своя локаль ru в которой месяцы со склонениями. в ларавеле он наверное использует ту локаль которая в config/app.php задана или можно вручную вызвать \Lang::setLocale('ru') в AppServiceProvider.php
Свернуть ответы
Vikky Shostak 0
12.11.2016 15:34
Там в моём куске кода эта строчка (почему-то) уехала к предыдущей. Иными словами, ни Date::setLocale('ru'), ни \Lang::setLocale('ru'), ни даже Carbon::setLocale('ru') – ситуацию не исправили.

Неясным, для меня, является факт того, что на локалке (OS X 10.11.6, PHP 7) и OpenServer 5.2.5 (Win10x64, PHP 5.6\7) – отображается всё так, как в jenssegers/date (месяц с маленькой буквы, родительный падеж), а на Таймвебе (шаред, на сервере kimmy) – совсем мимо Date и Carbon (месяц с большой буквы, в именительном падеже).

Гуглил проблему, но у рунете ничего подобного не нашёл, а у англичан нет подобных языковых проблем (счастливые...).
Vikky Shostak 0
12.11.2016 21:28
Обратился в ТП. Лучше бы не обращался, толку ноль.

Сказали: «Да, действительно, сейчас настройки хостинга таковы, что дата выводится именно таким образом. К сожалению, в рамках виртуального хостинга эту настройку изменить не представляется возможным.»

Говорю им: «Возможно ли перенести мой аккаунт на сервер, где это пофиксено? Просто, скорее всего из-за этого, не работает Carbon и jenssegers/date (соответственно).»

Отвечают: «Укажите, пожалуйста, список требований к серверу для корректного выполнения указанных Вами модулей. В противном случае, обратитесь, пожалуйста, к документации или службе поддержки используемого ПО для получения дополнительной информации.»

Короче, воз и ныне там. Буду искать другой сервер (путём регистрации на пробные 10 дней), чего ж делать остаётся.
Свернуть ответы
constb 0
14.11.2016 06:23
нет, jenssegers/date не должен форматировать дату таким образом сам по себе. что-то не так залито, не так настроено. "10 Ноябрь 2016" - так форматирует пхпшная стандартная функция strftime с русской локалью. такое впечатление что jenssegers не может найти свою локаль и использует дефолтную.

Похожие вопросы

Артур
457

Не могу обновиться с версии Joomla 3.9.27 на 3.10.11 и сменить версию PHP 7.4 на 8.0

1 вопрос: Скачал файлы через VPN, пробую через консоль. Выдаёт при загрузке ошибку "500". Никак не могу обновить сайт. Пакеты есть, а сайт не хочет их принять. 2-й вопрос:  Сайт просит сменить версию PHP c 7.4 на 8.0 и выше. Но...
Максим
462

Съезжает картинка, прошу помощи.

Здравствуйте, проблема с сайтом. После редактирования документа PHP, появилась проблема с корректным отображением карты ТЦ.  Проблемный 1й этаж. Но после перехода между разными этажами всё становится номально. <div><img class="image"...

Какой путь у файлов на хостинге?

Залил сайт на хостинг timeweb, но разметка вся исчезла. Дело в путях взаимодействия файлов? Путь на локалхосте у файлов был один, а сейчас на хостинге он другой, так? Нужно ли прописывать в пути файла 'public_html'? Если да, то ставится ли /public_html...
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Войти в Комьюнити
Регистрация в Комьюнити
Восстановление пароля