Я пытаюсь использовать встроенный 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