gpt4 book ai didi

php - 苹果操作系统 : Intl extension is not loaded

转载 作者:可可西里 更新时间:2023-11-01 13:25:31 26 4
gpt4 key购买 nike

  • macOS Mojave 10.14.3
  • PHP 7.1.23
  • Prestashop 1.7.5.1

我尝试在我的本地服务器上安装 PHP 国际扩展以使用 Prestashop。

我添加了 extension=php_intl.soetc/php.ini

当我尝试安装 Prestashop 时,我得到 Intl extension is not loaded

$ php -m | grep国际

当我执行 $ php -m | grep intl,我得到:

PHP 警告:PHP 启动:无法加载动态库
'/usr/local/lib/php/pecl/20160303/php_intl.so'-d
lopen(/usr/local/lib/php/pecl/20160303/php_intl.so, 9): 在第 0 行的未知中找不到图像
警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/pecl/20160303/php_intl.so' - dlopen
(/usr/local/lib/php/pecl/20160303/php_intl.so, 9):在第 0 行的未知中找不到图像
国际

php_intl.so 文件似乎不存在。

$ sudo pecl install 国际版

我也试过 $ sudo pecl install intl 我得到:

make: *** [php_intl.lo] 错误 1
错误:
make 失败`

$ curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1

我也尝试过 $ curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1 并且它不会创建 intl.so 文件。


我该如何解决这个问题?

最佳答案

Brew 的 PHP 7.1、7.2 和 7.3 都默认启用了 INTL


很可能,您只是在使用 Mac OS 的 PHP 捆绑版本。

运行

ls -l $(which php)

找出当前 PHP 二进制文件所在的位置以及它是否符号链接(symbolic link)到 Brew 安装。以我为例:

lrwxr-xr-x 1 27 May 23 16:30 /usr/local/bin/php -> ../Cellar/php/7.3.5/bin/php

意思是我的php链接到 Brew 的 7.3.5 版本。

如果您使用 Brew 的 PHP,您会看到类似的内容

-rwxr-xr-x 1 11169664 Mar 21 07:09 /usr/bin/php

通过 Brew 安装 PHP

查看您是否已经安装了 PHP:

brew list | grep php

如果有任何输出,并且您的 PHP 版本存在,请转到步骤 2,或使用步骤 1 将 PHP 更新到最新版本。

<强>1。安装 Homebrew 的 PHP

brew install php@7.3

(或 7.2、7.1)。如果 Brew 提示无法找到公式,则您可能弄乱了水龙头。而不是 php@7.3 ,您可以尝试提供 current php formula 的完整路径:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb

仍然无法正常工作,请检查您是否正在运行最新版本的 Homebrew brew --version .

Homebrew 2.1.3-31-geaf2370
Homebrew/homebrew-core (git revision fd1ef; last commit 2019-05-25)
Homebrew/homebrew-cask (git revision 16d50; last commit 2019-05-26)

<强>2。链接 Homebrew 的 PHP

现在,有 php “在你的道路上”,有两种选择。

a) 或者自制软件的版本必须从其安装位置链接 (/usr/local/bin/Cellar/php... .) 到路径中的目录(例如/usr/local/bin)。为此,请运行:

brew link --force php@7.3

如果您无法链接,这通常是由设置的权限或系统完整性保护引起的。在第一种情况下,尝试 sudo chown "$USER":admin /usr/local/bin/php .

b) 或者,添加 /usr/local/opt/php@7.3目录 ( opt-prefix ) 到您的 $PATH 变量。例如,对于 Bash:

echo 'export PATH="/usr/local/opt/php@7.3/bin:/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

<强>3。验证安装

ls -l $(which php)

应该显示 php链接到 /usr/local/bin/Cellar 中的 Homebrew PHP 安装.

php -v

应该显示最近安装的 PHP 版本。如果不是这种情况,请尝试重新启动您的终端。

php -i | grep -i intl

应该显示有关 intl 的当前安装的一些信息.

如果您正在使用网络服务器和/或 PHP FPM,现在是重新启动这些服务的时候了。 (或者重新启动您的系统,如果您不知道该怎么做并且无法弄清楚)。

可能的问题

如果您仍然收到有关缺少扩展的警告(无法加载动态库等),那么您的 php.ini 已经搞砸了。

找到php的ini当前位置

$ php -i | grep \.ini

Configuration File (php.ini) Path => /usr/local/etc/php/7.3
Loaded Configuration File => /usr/local/etc/php/7.3/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed => /usr/local/etc/php/7.3/conf.d/ext-opcache.ini
....

编辑/usr/local/etc/php/7.3/php.ini 并找到有问题的扩展加载(例如,extension="myext.so")。注释掉那些找不到的。

自制软件权限

Some argue chown 是个好主意 /usr/local .

sudo chown -R "$USER":admin /usr/local

这将使手动和通过 Homebrew 在这里安装东西变得容易得多,但也不太安全,因为现在也允许非 root 进程在这里写入。

您的网络应用程序正在使用不同版本的 PHP。

确保它不会... 这的配置取决于所使用的网络服务器。第一步是使用 <?php phpinfo(); 在您的 Web 应用程序中输出当前的 PHP 配置。 .

This explains steps for Apache.

另一种让网络服务器 + PHP 堆栈快速运行的方法是使用 Laravel Valet .

安装额外的扩展

要安装额外的 PHP 扩展,请使用 PEAR。

pear -V应该输出当前的 PEAR 和 PHP 版本。

PEAR Version: 1.10.9
PHP Version: 7.3.5
Zend Engine Version: 3.3.5

现在,安装扩展,例如 PHP 的 yaml 扩展:

pear install yaml

关于php - 苹果操作系统 : Intl extension is not loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com