尝试安装 int 扩展 macOS Catalina 和 PHP 7.4.10

Trying to install int extension macOS Catalina and PHP 7.4.10

我正在尝试为 PHP 7.4.10

安装 zipintl 扩展

我运行

sudo pecl install intl

然后安装要求:

Specify where ICU libraries and headers can be found [DEFAULT] : 

然后我按回车键继续,但随后显示下一个错误:

configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found

然后我开始看怎么安装icu,我运行:

brew install icu4c

控制台显示:

If you need to have icu4c first in your PATH run:
  echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> /Users/user/.bash_profile
  echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> /Users/user/.bash_profile

For compilers to find icu4c you may need to set:
  export LDFLAGS="-L/usr/local/opt/icu4c/lib"
  export CPPFLAGS="-I/usr/local/opt/icu4c/include"

For pkg-config to find icu4c you may need to set:
  export .bash_profile="/usr/local/opt/icu4c/lib/pkgconfig"

我将所有路径添加到 .bash_profile 配置文件和 运行:

source .bash_profile

此时我不确定我还收到什么待办事项:

== Environment ==
!! php_extension zip !!
[System] must be installed and enabled - The Zip PHP extension is now required by Moodle, info-ZIP binaries or
PclZip library are not used anymore.


!! php_extension intl !!
[System] must be installed and enabled - Intl extension is required to improve internationalization support, such as
locale aware sorting and international domain names.

甚至在 运行 sudo apachectl restart

之后

我还检查了很多指南,通过 php.ini 添加 extension=zip 安装 zip 扩展,但没有用

任何帮助将不胜感激

[更新]我尝试使用 post 的第一个答案,我在 运行 之后得到了所有结果,最后一个命令输出是 sudo pecl update-channels && sudo pecl install intl

checking for icu-uc >= 50.1 icu-io icu-i18n... no
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ICU_CFLAGS
and ICU_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
ERROR: `/private/tmp/pear/temp/intl/configure --with-php-config=/usr/local/opt/php/bin/php-config --with-icu-dir=/usr/local/opt/icu4c' failed

您的系统上是否存在 icu4c?什么是输出:

which icu4c

如果您没有输出,我们可以进一步调查。快速浏览 ICU documentation 告诉我们该库依赖于 autoconf。

brew update

brew install autoconf automake libtool

brew install icu4c

现在让我们检查icu4c是否安装正确

which icu4c

如果此时您仍然没有输出,那么最好从 source.Because 安装和编译 icu4c,这个通过 Homebrew 安装的库可能会受到影响 from multiple issues

wget https://github.com/unicode-org/icu/releases/download/release-67-1/icu4c-67_1-src.tgz

tar xvfz icu4c-67_1-src.tgz

cd icu/source

./configure --prefix=/usr/local/opt/icu4c/67_1 --enable-icu-config
sudo make && sudo make install

之后你可以恢复

sudo pecl update-channels && sudo pecl install intl

如果你会被问到

Specify where ICU libraries and headers can be found [DEFAULT] :

答案是

/usr/local/opt/icu4c

当 icu4c 与 brew 一起安装时,它不会将其文件复制到 pkg-config 配置目录。 因此,另一种解决方法是将 PKG_CONFIG_PATH 设置为 lib 所在的文件夹。示例:

PKG_CONFIG_PATH=/usr/local/Cellar/icu4c/69.1/lib/pkgconfig/ pkg-config --cflags --libs libsoup-2.4