7 votes

Comment compiler et utiliser les 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 de homebrew ou de tout autre gestionnaire de paquets, ni de la désactivation des utilitaires de sécurité, par exemple csrutil.

J'ai réussi à compiler l'extension intl mais apache ne la charge pas à cause 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, probablement en utilisant une méthode de signature ad-hoc ou autre ?

Je sais qu'il y a beaucoup d'autres sujets sur cette question mais tous sont laissés sans réponse ou tout au plus suggèrent des solutions de contournement de type homebrew !

Merci

4voto

Pooya Raki Points 179

Après des jours et des jours à essayer d'obtenir intl pour travailler 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 paquetage intégré (php, apache) et j'ai compilé les deux à partir des sources et maintenant j'ai la dernière version des deux installée avec l'extension intl qui fonctionne comme un charme, la construction de nouvelles extensions est un jeu d'enfant et php les exécute sans problème :)

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

J'espère que cette réponse aidera quelqu'un d'autre.

-3voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X