【问题标题】:Why does setlocale() in php throw this warn message?为什么 php 中的 setlocale() 会抛出此警告消息?
【发布时间】:2016-10-04 12:17:35
【问题描述】:

嘿,我目前正在开发一个网站,并想删除此警告消息。 谷歌没有帮助我,所以我开始在这里搜索,但仍然没有找到有效的解决方案。

错误:setlocale():无效的区域设置类别名称 LC_MESSAGES,必须是 LC_ALL、LC_COLLATE、LC_CTYPE、LC_MONETARY、LC_NUMERIC 或 LC_TIME

我的代码:

$locale = 'de_DE';
setlocale("LC_MESSAGES",$locale );

如果我将 LC_Messages 替换为 LC_All 或上层解决方案中的其他内容,我的网站将无法运行。

有什么想法吗?

【问题讨论】:

  • 删除“LC_MESSAGES”的引号
  • LC_MESSAGES 并不总是受支持:用于系统响应的 LC_MESSAGES(如果 PHP 使用 libintl 编译时可用)。来源:PHP: setlocale
  • @Anant 下一个错误是:注意:使用未定义的常量 LC_MESSAGES - 假定为 'LC_MESSAGES'
  • @xNiceEinz 你找到解决这个问题的方法了吗?

标签: php


【解决方案1】:

LC_MESSAGES 是一个环境变量,不应包含在字符串中。

改为使用

$locale = 'de_DE';
setlocale(LC_MESSAGES,$locale );

这应该会有所帮助。请检查您的设置中是否存在 libintl。对于windows你可以得到它libintl for windows

【讨论】:

    【解决方案2】:

    不总是支持 LC_MESSAGES:用于系统响应的 LC_MESSAGES(如果 PHP 是使用 libintl 编译的,则可用)。来源:PHP:setlocale

    【讨论】:

      【解决方案3】:

      删除 LC_MESSAGES 周围的引号。

      $locale = 'de_DE';
      setlocale(LC_MESSAGES,$locale );
      

      有关如何使用此功能的更多信息,请参阅文档 setlocale

      显然并不总是支持 LC_MESSAGES。

      你可以跑

      locale
      

      如果您使用的是 linux 发行版,请在您的终端上查找支持的常量列表。

      【讨论】:

      • 引号不是问题。还是谢谢你。
      • 下一个错误:“注意:使用未定义的常量 LC_MESSAGES - 假定为 'LC_MESSAGES'”
      • setlocale() 文档状态:“LC_MESSAGES 用于系统响应(如果 PHP 是使用 libintl 编译的,则可用)”因此它不能在您的 PHP 设置中使用。
      • 我假设您没有使用 Windows 环境。您可以在终端上运行locale 并找到 LC_* 的可用常量
      猜你喜欢
      • 1970-01-01
      • 2014-09-25
      • 2013-06-06
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多