首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac : Intl扩展未加载

Mac : Intl扩展未加载
EN

Stack Overflow用户
提问于 2019-03-22 14:01:48
回答 6查看 19.8K关注 0票数 16
  • macOS Mojave 10.14.3
  • PHP 7.1.23
  • Prestashop 1.7.5.1

为了使用Prestashop,我尝试在本地服务器上安装PHP扩展。

我将extension=php_intl.so添加到etc/php.ini

当我试图安装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安装intl

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

make: *** [php_intl.lo] Error 1 ERROR:使“失败”

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

我该如何解决这个问题?

EN

回答 6

Stack Overflow用户

发布于 2019-05-26 07:15:24

Brew的PHP7.1、7.2和7.3 都默认启用了INTL。

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

ls -l $(which php)

找出当前PHP二进制文件的位置,以及它是否与Brew安装有符号链接。例如,就我而言:

代码语言:javascript
复制
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的,您将看到以下内容

代码语言:javascript
复制
-rwxr-xr-x 1 11169664 Mar 21 07:09 /usr/bin/php

通过Brew安装PHP

了解您是否已经安装了PHP:

代码语言:javascript
复制
brew list | grep php

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

1.安装Homebrew的PHP

代码语言:javascript
复制
brew install php@7.3

(或7.2,7.1)。如果布鲁尔抱怨找不到配方,你可能会搞砸水龙头。而不是php@7.3,您可以尝试提供到电流php公式的完整路径

代码语言:javascript
复制
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb

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

代码语言:javascript
复制
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.链接家庭主妇的PHP

现在,要让php“在您的路径上”,有两个选项。

a) 到路径中的目录(例如/usr/local/bin)。要做到这一点,请运行:

代码语言:javascript
复制
brew link --force php@7.3

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

b) 或,将/usr/local/opt/php@7.3目录(https://docs.brew.sh/Formula-Cookbook)添加到$PATH变量中。例如,Bash

代码语言:javascript
复制
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 -v

应该显示最近安装的PHP版本。如果情况并非如此,请尝试重新启动终端。

php -i | grep -i intl

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

如果您使用的是webserver和/或PHP,那么现在是重新启动这些服务的时候了。(或者重新启动您的系统,如果您不知道如何这样做,并且无法解决)。

可能的问题

如果您仍然收到有关缺少扩展(无法加载动态库等)的警告,则将使您的php.ini混乱.

查找php的ini的当前位置

代码语言:javascript
复制
$ 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")。注释掉那些找不到的。

自制权限

有些人认为,这是一个好主意,去查城/usr/local

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

这将使在这里安装东西,通过手工和通过家庭酿造,要容易得多,但也有点不安全,因为非根进程现在也允许在这里写。

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

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

这说明了Apache的步骤。

另一种让webserver + PHP堆栈正常运行的方法是使用拉勒维尔瓦莱特

安装附加扩展程序

要安装其他PHP扩展,请使用PEAR。

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

代码语言:javascript
复制
PEAR Version: 1.10.9
PHP Version: 7.3.5
Zend Engine Version: 3.3.5

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

代码语言:javascript
复制
pear install yaml
票数 33
EN

Stack Overflow用户

发布于 2020-03-03 10:31:00

我看到了很多关于这个问题的答案,任何人都帮了我,但最后一个(当然)。这是供XAMPP使用的。

需要Xcode。从php.net下载在xampp中使用的php版本。提取它并使用cd打开终端中的解压缩文件夹。更改为子文件夹ext/intl。运行以下命令来构建扩展:

代码语言:javascript
复制
/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文件

代码语言:javascript
复制
extension="intl.so"

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

票数 1
EN

Stack Overflow用户

发布于 2019-03-22 16:31:50

由于php 7没有必要加载扩展php_intl.so,您需要做什么?编辑php.ini并删除或注释加载扩展php_intl.so的行,然后重新加载php_intl.so并重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55301299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档