Mac OS:Intl 扩展未加载。

12 浏览
0 Comments

Mac OS:Intl 扩展未加载。

  • macOS Mojave 10.14.3
  • PHP 7.1.23
  • Prestashop 1.7.5.1

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

我在etc/php.ini中添加了extension=php_intl.so

当我试图安装Prestashop时,我收到Intl extension is not loaded的错误消息。

$ php -m | grep intl

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

PHP Warning: PHP Startup: Unable to load dynamic library

\'/usr/local/lib/php/pecl/20160303/php_intl.so\' - d

lopen(/usr/local/lib/php/pecl/20160303/php_intl.so, 9): image not found in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library \'/usr/local/lib/php/pecl/20160303/php_intl.so\' - dlopen

(/usr/local/lib/php/pecl/20160303/php_intl.so, 9): image not found in Unknown on line 0

intl

看起来文件php_intl.so不存在。

$ sudo pecl install intl

我还尝试过$ sudo pecl install intl,但是我得到:

make: *** [php_intl.lo] Error 1

ERROR:make\' failed`

$ 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文件。


我该如何解决这个问题?

admin 更改状态以发布 2023年5月23日
0
0 Comments

我看到了很多关于这个问题的答案,但没有一个能帮到我,直到最后一个(当然了)。这是为了 XAMPP 的使用。

需要 Xcode。

从 php.net 下载你在 xampp 中使用的 php 版本。

解压缩它并在终端中使用 cd 命令打开解压缩后的文件夹。

进入子文件夹 ext/intl。

运行以下命令来构建扩展:

/Applications/XAMPP/bin/phpize
./configure --enable-intl --with-php-config=/Applications/XAMPP/bin/php-config --with-icu-dir=/Applications/XAMPP/xamppfiles/
make
sudo make install (password required)

删除所有下载的文件以及解压缩后的文件夹。

在 xampp/etc 文件夹中的 php.ini 文件中添加以下内容:

extension="intl.so"

原始链接:https://community.apachefriends.org/viewtopic.php?p=255061&sid=27afc55649dfe6ea7b0824cb0bb8486b

0
0 Comments

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


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

运行

ls -l $(which php)

查找当前 PHP 二进制文件的位置,以及它是否链接到 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 公式的完整路径,而不是输入 php@7.3

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....)将 Homebrew 的版本链接到您路径的一个目录中(例如 /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已链接到Homebrew PHP安装中的/usr/local/bin/Cellar

php -v

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

php -i | grep -i intl

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

如果您正在使用Web服务器和/或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")。注释掉那些找不到的扩展。

Homebrew权限

一些人认为这是一个好主意,可以chown /usr/local

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

这将使得手动和通过Homebrew安装东西变得更加容易,但也会降低一些安全性,因为非root进程也可以写入此处。

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

请确保它不会...这依赖于所使用的web服务器的配置。第一步是使用在您的web应用程序中输出当前的PHP配置。

这个链接为Apache解释了详细的步骤。

另一种快速启动web服务器+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

0