【问题标题】:PHP intl extension is installed, but CakePHP install says it is missingPHP intl 扩展已安装,但 CakePHP 安装说它丢失
【发布时间】:2017-05-19 06:22:18
【问题描述】:

一天多来,我一直在尝试启动一个 CakePHP 3 项目。当我运行 composer install 命令时,我收到以下错误:

cakephp/cakephp 3.3.x requires ext-intl * -> the requested PHP extension intl is missing from your system.

我使用的是 MacOS Sierra 10.12.2。 XCode 和所有爵士乐都是最新的。我正在通过 MAMP Pro 4.0.1 (3985) 运行 PHP 5.6.25。我正在尝试通过我的终端安装 CakePHP 3.3.x,它使用 ZSH 而不是 Bash。

我花了很长时间尝试安装 intl。到现在为止,我非常有信心它确实已安装:

  1. 当我运行 php -m 时,我在 PHP 模块列表中看到 intl
  2. 我的 php.ini 中有 extension=intl.so,位于 /Applications/MAMP/bin/php/php5.6.25/conf/php.ini
  3. 文件intl.so位于目录/Applications/MAMP/bin/php/php5.6.25/lib/php/extensions/no-debug-non-zts-20131226
  4. 在 MAMP 的 phpinfo 页面上,我可以在“配置命令”单元格中看到 '--enable-intl'。在页面下方,它有自己的表格,表明 1.1.0 版支持国际化。但是,在此表中,intl.default_locale 行的值为no value。这可能是我的问题吗?
  5. 在我的 ~/.zshrc 文件中,我有 alias php="/Applications/MAMP/bin/php/php5.6.25/bin/php",所以我可以确定我使用的是正确的 PHP 版本和安装。

我希望我没有因为尝试使用如此多的文章和 StackOverflow 的答案而破坏任何东西来使其正常工作。我知道这里有很多类似的intl 问题,但到目前为止我还没有找到任何答案。

所以我想这是 我的两个主要问题:

  1. 我上面列出的证据是否足以表明我确实正确安装了 intl 扩展,为什么如果正确安装,CakePHP 仍然抱怨缺少该扩展?
  2. 如果没有正确安装,我该如何纠正这个问题并让 CakePHP 安装?

谢谢!

【问题讨论】:

  • 在一个页面运行phpinfo();并查看是否安装了 intl。 Mac 自带 apache,因此很可能它是与您的命令行使用的 PHP 版本不同的 PHP 版本
  • 是的,您需要查看您的 apache 是否正在运行扩展,您还需要确保您的 apache 指向您已安装的 PHP 的 MAMP 版本,或者它是否指的是默认版本PHP 安装。
  • 在 Mac 上,查看 apache httpd.conf 文件中的这一行:#LoadModule php5_module libexec/apache2/libphp5.so 确保这一行指向 MAMP php。 httpd.conf 位于 /etc/apache2/httpd.conf。如果你 vim 进入文件,你正在寻找的行应该在 LoadModule 部分的底部附近。
  • 我浏览到我的 httpd.conf 文件并且该行被注释掉了,所以我取消了它的注释。但是,我使用的是 MAMP 的 apache 服务器,而不是我 Mac 上的原始服务器。我需要将它添加到 MAMP 的 httpd.conf 文件吗?它的 LoadModule 有不同的语法。例如,该文件具有MAMP_php_module_MAMP。但我不确定它是否指向正确的 php 模块?
  • 检查这个链接stackoverflow.com/questions/26285280/…希望这会有所帮助

标签: php cakephp cakephp-3.x intl


【解决方案1】:

我认为你没有从 php.ini 文件中启用 intl 扩展。

【讨论】:

  • 转到你的 xampp 目录并从 "xampp\php" 打开 php.ini 文件并在 php.ini 文件中找到 intl 并将 " ;extension=intl " 替换为 " extension=intl " 。
【解决方案2】:

感谢所有在 cmets 中伸出援手的人。但特别感谢Aman Rawat 将我指向this answer。我已经多次阅读该线程,但显然忽略了它。

我将export PATH="/Applications/MAMP/bin/php/php5.6.25/bin:$PATH" 添加到~/.zshrc

然后我可以通过 composer 安装 CakePHP。\

我假设我的路径中有 MAMP 的 PHP。我把它作为别名,所以终端中的php 会正确指向 MAMP 的 PHP 安装,但事实证明 PHP 从未真正在我的 PATH 中。

哎呀!

【讨论】:

  • 在另一个版本的 MAMP 中遇到了同样的问题。感谢您发布您的答案。
猜你喜欢
  • 2017-05-11
  • 2016-01-21
  • 2016-02-04
  • 2018-11-14
  • 2013-09-24
  • 2015-07-13
  • 2021-06-11
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多