Compiler et installer des modules PHP personnalisés avec ServBay
ServBay est un environnement de développement web local puissant compatible macOS et Windows, qui intègre une vaste gamme de logiciels pour répondre aux besoins des développeurs modernes. Il inclut nativement PHP, Node.js, Python, Go, Java, des bases de données (MySQL, PostgreSQL, MongoDB), des systèmes de cache (Redis) ainsi que des serveurs web (Caddy, Nginx, Apache), formant ainsi une stack technique très complète. L’un des avantages majeurs de ServBay est la gestion de multiples versions pour chaque composant, vous permettant de jongler facilement entre différentes configurations selon vos projets.
Bien que ServBay propose de nombreux modules PHP courants, il se peut que vous ayez besoin d’en compiler et d’installer d’autres, adaptés à des cas d’utilisation particuliers ou pour intégrer des services tiers spécifiques.
Ce guide fournit une procédure détaillée pour compiler et installer un module PHP personnalisé dans ServBay, en prenant pour exemples la compilation du module populaire de traitement d’images imagick
et du pilote de base de données Microsoft SQL Server sqlsrv
. Suivez ces étapes pour enrichir votre environnement PHP sous ServBay avec les fonctionnalités dont vous avez besoin.
Prérequis
Avis Important
Avant toute opération de compilation de module PHP, l’étape la plus cruciale consiste à initialiser correctement l’environnement de compilation, selon les instructions officielles ServBay, et à configurer vos variables d’environnement système. Cela constitue la base du succès de toute compilation de logiciel ServBay (modules PHP inclus). Si vous omettez ou ratez cette étape, les commandes de compilation échoueront quasi systématiquement, générant des erreurs du type commande introuvable, bibliothèque manquante, ou absence de fichiers d’entête.
Le script d’initialisation de l’environnement ServBay configure pour vous les variables essentielles, telles que PATH
(pour pointer vers les outils de build internes), SERVBAY_PACKAGE_FULL_PATH
(racine des packages ServBay), et CPU_NUMBER
(pour la compilation multi-cœurs). Ces variables sont indispensables pour toutes les commandes de compilation suivantes.
Pour connaitre la procédure précise d’initialisation de l’environnement ServBay, référez-vous obligatoirement à la documentation : Recompiler des packages avec ServBay. Assurez-vous d’avoir bien compris et suivi chacune des étapes requises.
Avant de poursuivre avec la compilation du module, vérifiez impérativement que l’initialisation de l’environnement de compilation ServBay est terminée et que les variables d’environnement sont bien actives dans votre session de terminal.
Pourquoi spécifier la version PHP ?
L’une des forces de ServBay est sa capacité à gérer et exécuter simultanément plusieurs versions de PHP sur le même système. Cette flexibilité facilite les tests et le développement multi-projets. Cependant, lorsque vous compilez un module PHP, il est indispensable de cibler la version exacte avec laquelle le module sera utilisé. Les outils clés pour préparer l’environnement de compilation et récupérer les configurations sont phpize
et php-config
, chacun étant intimement lié à une version PHP donnée.
phpize
: Prépare l’environnement de compilation pour un module d’extension PHP. Il lit le fichierconfig.m4
et génère le script standardconfigure
, étape courante de tout projet en C/C++.php-config
: Fournit les informations de configuration détaillées sur votre installation PHP, notamment les flags du compilateur, les dossiers d’inclusions et de bibliothèques, le chemin d’installation des extensions, etc. Le scriptconfigure
utilise ces données pour garantir la compatibilité du module avec la version ciblée de PHP.
Veillez donc à toujours spécifier le chemin complet vers la version PHP désirée pour toute invocation de phpize
, php-config
, ou autre commande liée à la construction de PHP.
Exemples de chemins
Pour compiler un module pour PHP 8.3 installé dans ServBay :
macOS :
phpize
:/Applications/ServBay/package/php/8.3/current/bin/phpize
php-config
:/Applications/ServBay/package/php/8.3/current/bin/php-config
Windows :
phpize
:C:\ServBay\package\php\8.3\current\bin\phpize
php-config
:C:\ServBay\package\php\8.3\current\bin\php-config
Un bon choix de version garantit que votre module sera compatible avec votre environnement PHP cible, éliminant les risques d’erreurs lors de la compilation ou de soucis d’exécution du type « symbole introuvable ».
Les exemples de ce document utilisent PHP 8.3 dans ServBay. Veillez à remplacer les chemins par ceux, réels, de votre installation ServBay lors de vos manipulations.
Compiler le module PHP imagick
Le module imagick
est l’une des extensions PHP les plus populaires et s’appuie sur la puissante suite ImageMagick pour proposer une multitude de fonctionnalités de traitement d’images. Grâce à imagick
, vous pouvez réaliser en PHP des opérations complexes telles que redimensionnement, découpage, conversion de formats, ajout de watermark, composition, etc. Voici le guide étape par étape pour compiler et installer imagick
dans ServBay pour une version PHP donnée :
Étape 1 : Installer la bibliothèque ImageMagick
Le module PHP imagick
dépend évidemment de la présence de la bibliothèque système ImageMagick.
macOS
L’outil recommandé est Homebrew. Si Homebrew n’est pas installé, rendez-vous sur le site officiel de Homebrew pour l’installer.
Ouvrez votre terminal et lancez :
bash
brew install imagemagick
1
Windows
Sous Windows, téléchargez et installez manuellement ImageMagick depuis la page de téléchargement officielle.
Assurez-vous de sélectionner la version incluant les librairies de développement et d’intégrer le chemin d’installation dans les variables d’environnement système.
Étape 2 : Récupérer le code source du module imagick
Téléchargez ensuite le code source du module depuis le site officiel PECL. Rendez-vous sur la page PECL d’imagick, choisissez la dernière version stable, et copiez son lien de téléchargement. Exemple avec la version 3.7.0
:
bash
wget https://pecl.php.net/get/imagick-3.7.0.tgz
1
Étape 3 : Décompresser et accéder au dossier source
Après le téléchargement, décompressez l’archive et entrez dans le dossier :
bash
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
1
2
2
Étape 4 : Préparer l’environnement de compilation (phpize)
Utilisez l’outil phpize
adapté à la version PHP visée, en veillant bien à utiliser le chemin complet. Avec l’environnement ServBay déjà configuré et la variable SERVBAY_PACKAGE_FULL_PATH
en place :
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
Une exécution réussie de phpize
vérifie le fichier config.m4
et génère le script configure
ainsi que les fichiers de build nécessaires. Des messages sont affichés en terminal pour indiquer que l’environnement de build est prêt.
Étape 5 : Configurer les options de compilation
Lancez le script configure
généré pour spécifier vos options de compilation. Ajoutez l'argument --with-php-config
pour indiquer la version PHP cible :
bash
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
Le script configure
va analyser les dépendances ImageMagick, les fichiers d’entête PHP, et générer le fichier Makefile pour la compilation. En cas d’erreur, cela signifie souvent qu’une dépendance ou un chemin n’a pas été trouvé.
Étape 6 : Compiler et installer le module
Après une configuration réussie et la création du Makefile, compilez et installez le module :
bash
make -j ${CPU_NUMBER}
make install
1
2
2
make install
placera l’extension compilée dans le dossier standard d’extensions PHP pour la version ServBay concernée :
- macOS :
/Applications/ServBay/package/php/8.3/current/lib/php/extensions/no-debug-non-zts-YYYYMMDD/
- Windows :
C:\ServBay\package\php\8.3\current\lib\php\extensions\no-debug-non-zts-YYYYMMDD\
Le chemin précis dépend de la version et de l’option de build.
Étape 7 : Activer le module
Après installation, il faut activer le module via la configuration PHP. ServBay propose une interface graphique pour cette opération.
- Lancez ServBay
- Naviguez dans le menu à gauche vers
Langages
>PHP
>PHP 8.3
- Sélectionnez l’onglet
PHP
à droite, descendez à “Paramètres supplémentaires”, puis ajoutez :extension=imagick.so
- Cliquez sur
Enregistrer
: le processus PHP redémarrera pour prendre la configuration en compte
Étape 8 : Vérifier le chargement du module
Après activation, redémarrez le package PHP dans ServBay pour que la nouvelle configuration soit prise en compte. Vous pouvez le faire via l’interface ServBay ou en ligne de commande (voir documentation officielle).
Vérifiez l’état du module via la ligne de commande :
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep imagick
1
Cette commande cible explicitement le binaire PHP de ServBay pour la version choisie, et la flag -m
liste les modules PHP chargés. Si tout est correct, imagick
doit apparaître dans la sortie.
Pour une vérification approfondie, créez un fichier PHP (ex. info.php
) dans le dossier racine web avec ce contenu : <?php phpinfo(); ?>
Emplacements par défaut :
- macOS :
/Applications/ServBay/www
- Windows :
C:\ServBay\www
Accédez à http://localhost/info.php
ou au domaine configuré depuis votre navigateur. Dans la page d’output phpinfo()
, recherchez « imagick » pour vérifier l’activation, la configuration, et la version du module.
Compiler les modules PHP sqlsrv/pdo_sqlsrv
Les extensions sqlsrv
et pdo_sqlsrv
sont les pilotes officiels PHP pour se connecter et interagir avec Microsoft SQL Server. Ils reposent sur le driver ODBC fourni par Microsoft. Si vous souhaitez accéder à SQL Server en PHP dans ServBay, voici comment compiler et installer ces modules :
Attention : Prérequis Critique
Avant toute opération sur le module sqlsrv
, vous devez installer le driver Microsoft SQL Server ODBC et les outils complémentaires. ServBay ne les inclut pas d’origine, il faut donc les ajouter manuellement.
macOS
On recommande Homebrew pour installer les dépendances. Si vous ne l’avez pas encore, voyez le site Homebrew.
Installez le driver ODBC Microsoft et les outils via :
bash
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
1
2
3
2
3
Selon votre Mac (Apple Silicon/Intel), ces packages sont installés dans /opt/homebrew/
ou /usr/local/
. Veillez à utiliser les bons chemins lors de la compilation.
Windows
Téléchargez et installez le driver depuis le site Microsoft :
- Allez sur Microsoft ODBC Driver for SQL Server
- Téléchargez la version adaptée à votre système
- Installez et vérifiez son bon fonctionnement
Assurez-vous que tout soit opérationnel avant de commencer la compilation du module.
Conseils
sqlsrv
et pdo_sqlsrv
sont deux modules distincts, à compiler séparément mais selon une procédure identique. Nous détaillons ici sqlsrv
.
Étape 1 : Installer les dépendances Microsoft ODBC
(Comme expliqué ci-dessus, cette étape doit impérativement être réalisée avant de poursuivre.)
Étape 2 : Télécharger le code source de sqlsrv
Rendez-vous sur le site officiel PECL pour télécharger les dernières versions de sqlsrv
et pdo_sqlsrv
. Exemple :
bash
wget https://pecl.php.net/get/sqlsrv-5.12.0.tgz # sqlsrv
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz # pdo_sqlsrv
1
2
2
Étape 3 : Décompresser et accéder au dossier source
Décompressez l’archive et entrez dans le dossier du module :
bash
tar zxvf sqlsrv-5.12.0.tgz
cd sqlsrv-5.12.0
# Idem pour pdo_sqlsrv, ci-dessous exemple avec sqlsrv
1
2
3
4
2
3
4
Étape 4 : Préparer l’environnement de compilation (phpize)
Utilisez phpize
adapté pour la version ciblée :
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
Étape 5 : Configurer les options de compilation (chemins des dépendances)
Avant de lancer le script configure
, il faut définir les variables d’environnement LDFLAGS
et CPPFLAGS
pour spécifier les chemins de recherche des librairies et headers installés par Homebrew (ou autre méthode). L’argument --with-php-config
reste obligatoire pour cibler la bonne version PHP.
Adaptez ces commandes selon votre installation (ex. /opt/homebrew
ou /usr/local
). Exemple pour /opt/homebrew
:
bash
export LDFLAGS="-L/opt/homebrew/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/unixodbc/include -I/opt/homebrew/include ${CPPFLAGS}"
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
2
3
2
3
LDFLAGS
: Indique au linker où chercher les librairies (ici, celles de Homebrew).CPPFLAGS
: Précise au préprocesseur les chemins pour les headers d’unixODBC et autres dépendances.- L’inclusion de
${CPPFLAGS}
et${LDFLAGS}
respecte les paramètres potentiellement préalablement définis par ServBay.
Étape 6 : Compiler et installer le module
Compilez et installez le module comme précédemment :
bash
make -j ${CPU_NUMBER}
make install
1
2
2
L’extension compilée sera copiée dans le dossier standard des extensions PHP pour la version ServBay utilisée.
Étape 7 : Activer le module
Activez ensuite les extensions dans les paramètres PHP via l’interface graphique ServBay :
- Ouvrez ServBay
- Dans le menu de gauche, allez à
Langages
>PHP
>PHP 8.3
- Sur la page de droite, dans “Paramètres supplémentaires”, ajoutez :
extension=sqlsrv.so
extension=pdo_sqlsrv.so
- Cliquez sur
Enregistrer
, ServBay relancera PHP avec les modules activés
Étape 8 : Vérifier le chargement des modules
Après activation, redémarrez le package PHP ServBay pour valider la configuration.
En terminal, vérifiez la présence des modules :
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep sqlsrv
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep pdo_sqlsrv
1
2
2
Si tout est ok, sqlsrv
et/ou pdo_sqlsrv
doivent apparaitre. Vous pouvez aussi vérifier via phpinfo()
comme précédemment.
Foire aux questions (FAQ)
- Q : Erreur “Cannot find autoconf” ou similaire lors de la compilation ?
- R : Cela signifie que l’environnement de compilation ServBay n’a pas été initialisé. Reprenez la partie “Prérequis” de ce guide et suivez scrupuleusement la documentation Recompiler des packages avec ServBay. Vérifiez l’installation des outils de build (autoconf, automake, libtool, …) et leur présence dans le PATH. L’exécution du script d’initialisation ServBay, suivie d’un redémarrage du terminal, résout ce souci dans la plupart des cas.
- Q : Le script
configure
indique qu’il manque une librairie ou un header ?- R : Un prérequis du module n’est pas installé ou non détecté :
- Pour
imagick
: Vérifiez l’installation des librairies de développement ImageMagick via Homebrew :brew install imagemagick
. - Pour
sqlsrv
: Confirmez la présence du driver ODBC Microsoft (msodbcsql18
) et des outils associés (mssql-tools18
). Avant de lancerconfigure
, assurez-vous queLDFLAGS
etCPPFLAGS
incluent bien tous les chemins requis, (/opt/homebrew/lib
,/opt/homebrew/opt/unixodbc/include
, …). - Vérifiez que les chemins Homebrew sont inclus dans l’environnement ServBay, et si besoin, ajoutez le dossier bin de Homebrew au PATH utilisé par ServBay.
- Pour
- R : Un prérequis du module n’est pas installé ou non détecté :
- Q : Échec de
make
oumake install
?- R : Plusieurs causes possibles :
- Dépendances manquantes : Lisez bien les messages d’erreur et installez les packages ou fichiers manquants.
- Mauvaise configuration : Revérifiez les arguments
configure
, surtout le chemin--with-php-config
. - Problèmes de permissions : La copie dans le répertoire d’extensions peut échouer sans les droits nécessaires. Essayez
sudo make install
(à utiliser avec précaution). - Archive corrompue : Assurez-vous que le code source du module est complet et sain.
- R : Plusieurs causes possibles :
- Q : Le fichier
.so
du module existe dans le dossier d’extension, il est activé dans le.ini
mais n’apparait pas viaphp -m
ouphpinfo()
?- R :
- Raison principale : Le package PHP ServBay n’a pas été redémarré. Après toute modification du fichier
.ini
, redémarrez PHP via le panneau ServBay ou la ligne de commande. Recharger simplement la page web ou le serveur web (Caddy/Nginx) est insuffisant. - Erreur de syntaxe dans le
.ini
: Vérifiez la bonne orthographe et le format (extension=modulename.so
). - Chemin d’extension incorrect : Confirmez que la variable
extension_dir
dans lephp.ini
pointe bien vers le dossier d’extensions de ServBay. Utilisezphp-config --extension-dir
pour vérifier l’emplacement. - Corruption ou incompatibilité : Recompilez en vous assurant de choisir la bonne version du code source et de PHP. Consultez les logs PHP (dans le dossier logs de ServBay) pour d’autres informations sur l’échec de chargement.
- Raison principale : Le package PHP ServBay n’a pas été redémarré. Après toute modification du fichier
- R :
Conclusion
En suivant les étapes de ce guide, vous êtes en mesure de compiler et installer des modules PHP personnalisés dans ServBay, tels que imagick
et sqlsrv
. Les points clés sont :
- Initialisation correcte de l’environnement de compilation ServBay : C’est la base indispensable pour tout succès de compilation.
- Spécification exacte du chemin de la version PHP cible : Utilisez toujours le chemin complet vers la version souhaitée lors de l’utilisation de
phpize
etphp-config
. - Gestion des dépendances externes : Installez les librairies et outils externes nécessaires (ImageMagick, drivers ODBC Microsoft…) et indiquez-leur chemin via les options d’environnement (
LDFLAGS
,CPPFLAGS
) ou les arguments du scriptconfigure
, afin d’assurer leur détection par le script durant la compilation. - Activation correcte du module : Modifiez ou créez un fichier
.ini
dans le dossierconf.d
de la version PHP, en inscrivantextension=modulename.so
. - Redémarrage du package PHP ServBay : Pour que la nouvelle configuration et le chargement du module prennent effet.
ServBay vous offre une flexibilité et une puissance incomparables pour vos développements locaux. Outre la compilation de modules PHP présentée ici, ServBay gère nativement MySQL, PostgreSQL, MongoDB, Redis, Caddy, Nginx, Apache, Node.js, Python, Go, Java, .NET, Ruby, Rust et bien d’autres stacks modernes. Il propose également de nombreux outils pratiques, tels que la gestion automatique de certificats SSL via ACME, la configuration rapide du CORS, la sauvegarde automatisée (paramètres, sites, bases de données, SSL), la réinitialisation du mot de passe root des bases, ainsi que le support des CA locales ServBay pour le HTTPS en développement.
Ce guide a pour but de vous permettre d’ajouter facilement les fonctionnalités nécessaires à votre environnement PHP ServBay et de gagner en productivité dans vos développements web. En cas de questions ou problèmes supplémentaires, consultez la documentation officielle ou la communauté ServBay.