Я попытался установить расширение PHP intl на свой локальный сервер, чтобы использовать Prestashop.
Я добавил extension=php_intl.so к etc/php.ini
Когда я пытаюсь установить Prestashop, я получаю Intl extension is not loaded.
Когда я делаю $ 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и получаю:
make: *** [php_intl.lo] Error 1
ERROR:сделать' не удалось`
Я также пробовал $ curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1, и он не создает файл intl.so.
Как я могу решить эту проблему?






Поскольку в 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 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