我正在尝试通过自己编译 ZIP 扩展来使用 MacOS Catalina 10.15 中的内置 PHP。
在新的 MacOS Catalina 中,该phpize
工具不再可用,因为它包含指向 PHP 库的无效路径。该卷/usr
以只读方式安装,使过去使用的所有方法都无效。
我安装了Xcode 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,与MacOS Catalina 10.15内置的PHP版本相同。
在解压下载文件夹中的存档文件后,我打开终端,进入其文件夹
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