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

时间:2018-12-07 11:04:28

标签: php macos apache macos-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

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

我知道关于此问题还有很多其他话题,但是所有这些话题都没有得到解答,或者最多只是提出了自制的变通办法!

谢谢

2 个答案:

答案 0 :(得分:3)

日复一日,试图使intl与内置php一起工作,我最终得到了一个可靠的解决方案!

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

这是我所做的,我忽略了内置软件包(php,apache),并从源代码进行了编译,现在我都安装了最新版本的intl扩展程序,它们像魅力一样运行,构建新的扩展程序是小菜一碟和php运行它们而不会na:)

我真的不明白为什么人们会用homebrew这样的东西,而您却可以自己轻松地编译库和扩展。

我希望这个答案可以帮助某个人。

答案 1 :(得分:0)

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

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