web-dev-qa-db-fra.com

Comment compiler et utiliser des extensions php sur Mac OS Mojave

Je viens d'installer le nouvel OSX Mojave et, comme vous le savez, il est livré avec PHP 7.1.19 pré-installé avec seulement quelques extensions disponibles.

Tout d’abord, je ne suis pas un fan d’homebrew ou d’autres gestionnaires de paquets, ni de la désactivation des utilitaires de sécurité, c.-à-d. Csrutil.

J'ai compilé avec succès l'extension intl mais Apache ne la charge pas en raison d'un problème de signature de code:

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

Existe-t-il un moyen de signer les extensions nouvellement compilées, en utilisant probablement une méthode de signature ad hoc ou quelque chose de ce genre?

Je sais qu'il existe de nombreux autres sujets sur ce sujet, mais tous sont laissés sans réponse ou tout au plus suggérant des solutions de rechange de type homebrew!

Merci

6
Pooya Raki

Après des jours et des jours en essayant de faire fonctionner intl avec le php intégré, je me suis retrouvé avec une solution robuste!

Tout d'abord, je dois dire que cette réponse n'a rien à voir avec la signature de code!

Voici ce que j'ai fait, j'ai ignoré le paquet intégré (php, Apache) et compilé à la fois depuis le source et maintenant j'ai la dernière version des deux installée avec l'extension intl fonctionnant à merveille, construire de nouvelles extensions est un jeu d'enfant et php les exécute sans harceler :)

Je ne comprends pas vraiment pourquoi les gens utilisent homebrew pour une telle chose alors que vous pouvez facilement compiler vous-même des bibliothèques et des extensions.

J'espère que cette réponse aide quelqu'un là-bas.

3
Pooya Raki

J'ai aussi le même problème. Tout le monde résout le problème avec l'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
0
Carlos Arriagada