【发布时间】: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。到现在为止,我非常有信心它确实已安装:
- 当我运行
php -m时,我在 PHP 模块列表中看到intl。 - 我的 php.ini 中有
extension=intl.so,位于/Applications/MAMP/bin/php/php5.6.25/conf/php.ini。 - 文件
intl.so位于目录/Applications/MAMP/bin/php/php5.6.25/lib/php/extensions/no-debug-non-zts-20131226。 - 在 MAMP 的 phpinfo 页面上,我可以在“配置命令”单元格中看到
'--enable-intl'。在页面下方,它有自己的表格,表明 1.1.0 版支持国际化。但是,在此表中,intl.default_locale行的值为no value。这可能是我的问题吗? - 在我的
~/.zshrc文件中,我有alias php="/Applications/MAMP/bin/php/php5.6.25/bin/php",所以我可以确定我使用的是正确的 PHP 版本和安装。
我希望我没有因为尝试使用如此多的文章和 StackOverflow 的答案而破坏任何东西来使其正常工作。我知道这里有很多类似的intl 问题,但到目前为止我还没有找到任何答案。
所以我想这是 我的两个主要问题:
- 我上面列出的证据是否足以表明我确实正确安装了
intl扩展,为什么如果正确安装,CakePHP 仍然抱怨缺少该扩展? - 如果没有正确安装,我该如何纠正这个问题并让 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