Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Locale по-умолчанию в php  (Прочитано 4422 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dmitry_stas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Locale по-умолчанию в php
« : 22 Апреля 2014, 17:36:02 »
что-то не могу никак разобраться, можно ли как то сделать, чтобы в php не приходилось в скриптах делать

Код: (php) [Выделить]
setlocale(LC_ALL,'en_US.UTF-8')
т.е. установить locale по-умолчанию для php (ну или видимо правильнее сказать для юзера под которым работает php) как en_US.UTF-8

если делаю locale по ssh, то выводит верно, в частности, LANG=en_US.UTF-8

а вот passthru('locale') из php выводит LANG=C, и из-за этого неверно работают многобайтовые функции. Если же сделать принудительно setlocale как en_US.UTF-8 - то начинают работать верно.

подскажите пожалуйста, как сделать чтобы в php сразу было en_US.UTF-8 ? спасибо заранее.

Ubuntu 12.04 / Apache / Nginx / Mod-PHP

Пользователь решил продолжить мысль 23 Апреля 2014, 17:21:16:
это я сильно простой вопрос задал? или наоборот сильно сложный?
« Последнее редактирование: 23 Апреля 2014, 17:21:16 от dmitry_stas »
Ubuntu 12.04 / Apache / Nginx / Mod-PHP

Оффлайн kaze.mir

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #1 : 28 Апреля 2014, 17:58:07 »
тоже интересует. dmitry_stas, не решил случайно?

Оффлайн dmitry_stas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #2 : 28 Апреля 2014, 23:54:19 »
нет, к сожалению пока ничего не накопал
Ubuntu 12.04 / Apache / Nginx / Mod-PHP

Оффлайн kaze.mir

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #3 : 29 Апреля 2014, 23:18:40 »
ну подскажите пожалуйста кто-нибудь. в благодарность готов облить пивом :) или не пивом :)


Оффлайн dmitry_stas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #5 : 03 Мая 2014, 23:25:08 »
спасибо за ответ, но к сожалению, не подходит.

по поводу intl.default_locale цитата из описания:
Цитировать
These are ICU locales, not system locales
т.е. Locale::getDefault() дает нужный результат, но вот passthru('locale') из php по прежнему выводит LANG=C, и соответственно по прежнему многобайтовые функции без явного указания setlocale(LC_ALL,'en_US.UTF-8') работают не верно

по поводу SetEnv LC_ALL en_US.UTF-8 в .htaccess - также не подходит по причине
Цитировать
But these settings only take effect for CGI and FastCGI versions of PHP at best, not for the usual mod_php installation.
а у меня как раз
Ubuntu 12.04 / Apache / Nginx / Mod-PHP
Ubuntu 12.04 / Apache / Nginx / Mod-PHP

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #6 : 07 Мая 2014, 20:31:47 »
LANG=C установлен для переменных окружения Apache.
Можно попробовать изменить значение в файле /etc/init.d/apache2

Оффлайн dmitry_stas

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #7 : 08 Мая 2014, 22:48:33 »
unimix, спасибо вам огромное! Действительно дело было в переменных окружения, только не в /etc/init.d/apache2, а в /etc/apache2/envvars. Спасибо еще раз!
Ubuntu 12.04 / Apache / Nginx / Mod-PHP

Оффлайн linuxoproblemi

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: Locale по-умолчанию в php
« Ответ #8 : 09 Мая 2014, 03:41:02 »
dmitry_stas,
Я в проблему не вникал, зачем и почему вам это понадобилось.
Но если необходимо в каждом скрипте - в php.ini пропишите auto_prepend_file = "/var/www/prepend.php" в котором ваш код. Он будет выполняться в начале всех скриптов.
Если вам только для одного проекта и у вас апач, то в .htaccess прописать php_value auto_prepend_file prepend.php
В nginx будет сложнее.

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.