如何在 Mac OS Mojave 上编译和使用 php 扩展

How to compile and use php extensions on Mac OS Mojave

我刚刚安装了新的 OSX Mojave,如您所知,它预装了 PHP 7.1.19,只有几个可用的扩展。

首先,我不喜欢自制软件或任何其他包管理器,也不喜欢禁用安全实用程序,即 csrutil。

我已经成功编译了 intl 扩展,但是由于代码签名问题,apache 没有加载它:

PHP Startup: Unable to load dynamic library 'intl.so' - dlopen(intl.so, 0x0009): code signature in (intl.so) not valid for use in process: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed. in Unknown on line 0

有没有办法对新编译的扩展进行签名,可能使用临时签名方法或其他方法?

我知道还有很多关于此问题的其他主题,但所有主题都没有得到解答,或者最多建议使用自制软件解决方法!

谢谢

在尝试让 intl 使用内置 php 几天之后,我最终找到了一个可靠的解决方案!

首先我必须声明这个答案与代码签名无关!

这是我所做的,我忽略了内置包(php,apache)并从源代码编译,现在我安装了最新版本的国际扩展 运行 就像一个魅力,构建新的扩展是小菜一碟,php 毫不费力地运行它们 :)

我真的不明白为什么人们使用 homebrew 来做这样的事情,而你可以轻松地自己编译库和扩展。

我希望这个回答能帮助到那里的人。

我也有同样的问题。每个人都用自制软件解决问题...

codesign -vd /usr/lib/php/extensions/no-debug-non-zts-20160303/x.so
/usr/lib/php/extensions/no-debug-non-zts-20160303/x.so: code object is not signed at all


codesign -vd /usr/lib/php/extensions/no-debug-non-zts-20160303/opcache.so 
Executable=/usr/lib/php/extensions/no-debug-non-zts-20160303/opcache.so
Identifier=com.apple.opcache
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=2914 flags=0x0(none) hashes=87+2 location=embedded
Platform identifier=5
Signature size=4485
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=68


codesign -vd /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so 
Executable=/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Identifier=com.apple.xdebug
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=1985 flags=0x0(none) hashes=58+2 location=embedded
Platform identifier=5
Signature size=4485
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=64