Сбой установки расширений PECL после обновления MacOS до Mojave (10.14) - PullRequest
0 голосов
/ 26 сентября 2018

Я использую свой Mac для разработки трех проектов: приложения для Android, приложения для iPhone и проекта Symfony.

В моем проекте Symfony используются расширения Redis и APCu.Это было установлено (6 месяцев назад) через PECL, используя:

sudo pecl install redis

и

sudo pecl install apcu

Вчера, после обновления моего Mac до Mojave, и попытайтесь запустить встроенную в PHP PHPСервер как обычно, я получаю следующую ошибку:

Попытка загрузить класс "Redis" из глобального пространства имен.Вы забыли оператор use?

Я также заметил, что php.ini был удален во время установки, поэтому я использовал php.ini-previous для генерации php.ini снова.

Также переустановил Инструменты командной строки (был удален во время установки):

xcode-select --install

И, наконец, я попытался установить расширение Redis через PECL, снова:

sudo pecl install redis

На этот раз PECL выдает ошибку:

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/libtool --mode=compile cc  -I. -I/private/tmp/pear/temp/redis -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/include -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/main -I/private/tmp/pear/temp/redis -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /private/tmp/pear/temp/redis/redis.c -o redis.lo
mkdir .libs
cc -I. -I/private/tmp/pear/temp/redis -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/include -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/main -I/private/tmp/pear/temp/redis -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/redis/redis.c  -fno-common -DPIC -o .libs/redis.o
In file included from /private/tmp/pear/temp/redis/redis.c:27:
/private/tmp/pear/temp/redis/common.h:1:10: fatal error: 'php.h' file not found
#include "php.h"
         ^~~~~~~
1 error generated.
make: *** [redis.lo] Error 1
ERROR: `make' failed

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

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вам нужно будет сделать

$ locate php.h

Результаты должны быть примерно такими:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main/php.h /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php/main/php.h

Далее вы будетеВы хотите отключить SIP, чтобы вы могли создать папку в /usr/include и поставить ссылку на зависимости php dev в эту папку. Для этого вам нужно загрузиться в recovery;перезагрузите компьютер, затем удерживайте cmd + R, пока он перезагружается, выберите терминал в меню утилит.

run # csrutil disable && shutdown -r now

это отключит SIP и перезагрузит компьютер.

Как только вы загрузитесь, вы захотите создать папку, о которой мы говорили, вот так sudo mkdir /usr/include

Затем мы создадим символическую ссылку, где расположены файлы php dev

$ ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php /usr/include

Вам все равно придется включить SIP обратно, поэтому загрузитесь в режиме восстановления на этот раз, и вы запустите

# csrutil enable && shutdown -r now, и все.

0 голосов
/ 02 октября 2018

Выполнение следующей команды переустановит заголовочные файлы инструментов разработчика и устранит проблему.

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
...