Как скомпилировать и использовать расширения php в Mac OS Mojave - PullRequest
0 голосов
/ 07 декабря 2018

Я только что установил новый OSX Mojave, и, как вы знаете, он поставляется с предварительно установленной PHP 7.1.19 с несколькими доступными расширениями.

Прежде всего, я не фанат homebrew или каких-либо другихменеджеры пакетов, а также отключение утилит безопасности, т. е. 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 голосов
/ 03 февраля 2019

У меня тоже такая же проблема.Все решают проблему с домашним пивом ...

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
0 голосов
/ 10 декабря 2018

После нескольких дней, пытаясь заставить intl работать со встроенным php, я получил надежное решение!

Сначала я должен сказать, что этот ответ не имеет ничего общего с подписанием кода!

Вот что я сделал, я проигнорировал встроенный пакет (php, apache) и скомпилировал оба из исходного кода, и теперь у меня установлена ​​последняя версия обоих с расширением intl, работающим как чудо, строит новыйРасширения - это просто, и php запускает их без раздражения:)

Я не совсем понимаю, почему люди используют homebrew для такой вещи, в то время как вы можете легко скомпилировать библиотеки и расширения самостоятельно.

Надеюсь, этот ответ кому-нибудь поможет.

...