PHP 7.3.8。MacOS Catalina 10.15 上的 ZIP 扩展

PHP 7.3.8。MacOS Catalina 10.15 上的 ZIP 扩展

我正在尝试通过自己编译 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

相关内容