PHP 7.3.8. Расширение ZIP на MacOS Catalina 10.15

PHP 7.3.8. Расширение ZIP на MacOS Catalina 10.15

Я пытаюсь использовать встроенный PHP в MacOS Catalina 10.15, самостоятельно скомпилировав расширение ZIP.

В новой MacOS Catalina phpizeинструмент больше не может использоваться, поскольку внутри он содержит недействительный путь к библиотекам PHP. Том /usrмонтируется только для чтения, что делает все методы, используемые в прошлом, недействительными.

Я установилXкод 11из AppStore.

Затем я создал еще один phpize, который ссылается на Xcode, скопировав его на свой рабочий стол.

cp /usr/bin/phpize ~/Desktop/

затем открыл его для редактирования с помощьюvim

vim ~/Desktop/phpize

и изменил строку 8 следующим образом

includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

Затем скачалphp-7.3.8, та же версия PHP, что встроена в MacOS Catalina 10.15.

После того, как я распаковал архивный файл в папку «Загрузки», я открыл Терминал и открыл его папку.

cd ~/Downloads/php-7.3.8/ext/zip

Оказавшись внутри, запустил настроенный phpize, чтобы подготовить расширение ZIP к настройке.

~/Desktop/phpize

Расширение теперь настраиваемое. Я запустил configure с дополнительным путем к нужномуzlib

sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/

Следующим шагом будет компиляция и установка, но я все еще получаю ошибкуphp.h file not found

make && make install

Может быть, где-то все еще есть неверный путь...

решение1

Вы можете использовать CPPFLAGSуказатель makeвправо /usr/include, который находится внутри Xcode.app:

INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

make CPPFLAGS="-I${INCLUDE_PATH}/php -I${INCLUDE_PATH}/php/main -I${INCLUDE_PATH}/php/TSRM -I${INCLUDE_PATH}/php/Zend -I${INCLUDE_PATH}/php/ext -I${INCLUDE_PATH}/php/ext/date/lib"

Также обратите внимание, что при редактировании phpizeне должно быть пробелов вокруг законного знака ( =).

РЕДАКТИРОВАТЬ

Чтобы решить проблему с последующим комментарием, make installтакже не получится, так как он не может переместить расширение в нужное место. Но вам все равно нужно выполнить команду, так как она подпишет файл *.so.

После make installзапуска переместите исполняемый файл в безопасное место. Я использую /usr/local/php/extensions.

Например, Xdebug(измените .soимя на имя вашего расширения):

sudo mkdir -p /usr/local/php/extensions
sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions

Затем вы редактируете конфигурацию PHP, чтобы включить свое расширение, sudo nano /etc/php.iniдобавляя необходимые строки внизу (точную строку для zip не знаю).

После этого перезапустите встроенный сервер, чтобы убедиться:

sudo apachectl restart

Связанный контент