Mac OS: расширение Intl не загружено

  • macOS Мохаве 10.14.3
  • PHP 7.1.23
  • Престашоп 1.7.5.1

Я попытался установить расширение PHP intl на свой локальный сервер, чтобы использовать Prestashop.

Я добавил extension=php_intl.so к etc/php.ini

Когда я пытаюсь установить Prestashop, я получаю Intl extension is not loaded.

$ php -м | grep междунар.

Когда я делаю $ 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 установить международный

Я тоже пробовал $ sudo pecl install intlи получаю:

make: *** [php_intl.lo] Error 1 ERROR:сделать' не удалось`

$ curl -s http://php-osx.liip.ch/install.sh | баш -с 7.1

Я также пробовал $ curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1, и он не создает файл intl.so.


Как я могу решить эту проблему?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
16
6
16 691
6

Ответы 6

Поскольку в php 7 нет необходимости загружать расширение php_intl.so, что вам нужно сделать?, отредактируйте свой php.ini и удалите или прокомментируйте строку, которая загружает расширение php_intl.so, после этого перезагрузите апач и попробуйте еще раз.

Возможно, проблема с заваривать

Вы можете попробовать использовать это, как указано там:

brew tap kyslik/homebrew-php

brew install kyslik/php/php71-intl

Brew PHP 7.1, 7.2 и 7.3 у всех по умолчанию включен INTL.


Скорее всего, вы просто используете пакетную версию PHP для Mac OS.

Бегать

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.

Если вы НЕТ используете PHP от Brew, вы увидите что-то вроде

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

Установка PHP через Brew

Узнайте, установили ли вы уже PHP:

brew list | grep php

Если есть какие-либо выходные данные и ваша версия PHP присутствует, перейдите к шагу 2 или используйте шаг 1, чтобы обновить PHP до последней версии.

1. Установите PHP Homebrew

brew install [email protected]

(или 7.2, 7.1). Если Brew жалуется, что не может найти формулу, возможно, вы напортачили с кранами. Вместо [email protected] вы можете попробовать указать полный путь к текущая формула php:

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. Свяжите PHP с Homebrew

Теперь, чтобы иметь php «на своем пути», есть два варианта.

а)Либо версия homebrew должна быть связанный от места установки (/usr/local/bin/Cellar/php....) до каталога на вашем пути (например, /usr/local/bin). Для этого запустите:

brew link --force [email protected]

Если вы не можете связать, это обычно вызвано установленными разрешениями или защитой целостности системы. В первом случае попробуйте sudo chown "$USER":admin /usr/local/bin/php.

б)Или, добавьте каталог /usr/local/opt/[email protected] (opt-префикс) в переменную $PATH. Например, для Баш:

echo 'export PATH = "/usr/local/opt/[email protected]/bin:/usr/local/opt/[email protected]/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.

Если вы используете веб-серверы и/или 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"). Закомментируйте те, которые не могут быть найдены.

Доморощенные разрешения

Некоторые утверждают, что это хорошая идея, чтобы перекусить /usr/local.

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

Это сделает установку вещей здесь, вручную и через Homebrew, намного проще, но также и немного менее безопасно, поскольку процессы без полномочий root теперь также могут писать сюда.

Ваше веб-приложение использует другую версию PHP.

Убедитесь, что это не так... Конфигурация этого зависит от используемого веб-сервера. Первым шагом будет вывод текущей конфигурации PHP в вашем веб-приложении с помощью <?php phpinfo();.

Это объясняет шаги для Apache.

Еще один способ быстро запустить стек веб-сервер + PHP — использовать Ларавель Валет.

Установка дополнительных расширений

Чтобы установить дополнительные расширения 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

я пробовал все, но intl не работает в Mac, поэтому удалите xampp и установите mamp, он будет работать

Итак, на официальном сайте Pecl ( https://pecl.php.net/package/intl ) ясно, что пакет Intl больше не поддерживается и был заменен. Начиная с PHP 5.3.0, вам не нужно использовать Pecl для установки расширения intl, он поставляется вместе с PHP.

Но он отсутствует при встроенной установке PHP 7.1.24 в Mac OS Mojave.

если вы хотите использовать только предустановленные apache и php вместо доморощенного, сделайте следующее:

Загрузите PHP 7.1 с php.net, установите инструменты командной строки XCode, ICU (http://site.icu-project.org/), Autoconf, переустановите заголовочные файлы инструментов разработчика и, наконец, установите расширение Intl с помощью phpize.

Важно: вам придется отключить SIP.

Я видел много ответов по этой проблеме и мне кто-нибудь помог, кроме последнего (конечно). Это для использования XAMPP.

Xcode нужен. Загрузите версию php, которую вы используете в xampp, с php.net. Извлеките его и откройте извлеченную папку в терминале с помощью компакт-диска. Перейдите в подпапку 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)

Удалите все загруженные файлы, а также извлеченные папки. Добавить в файл php.ini в строке папки xampp/etc

extension = "intl.so"

Исходная ссылка: https://community.apachefriends.org/viewtopic.php?p=255061&sid=27afc55649dfe6ea7b0824cb0bb8486b

Другие вопросы по теме