Dépannage PHP sur ServBay : Résoudre les erreurs ImageMagick et la lenteur des téléchargements de gros fichiers
ServBay offre aux développeurs un environnement local de développement Web pratique, supportant de multiples versions de PHP et de nombreuses extensions. Bien que ServBay vise à fournir un service stable et fiable, il peut arriver que des problèmes surviennent avec le service PHP ou certains modules d'extension.
Cet article vous guide pour diagnostiquer et résoudre les problèmes PHP courants sur ServBay, en mettant l’accent sur l’erreur de l’extension ImageMagick et la baisse de vitesse lors de l’upload de gros fichiers via PHP. Vous trouverez ci-dessous des étapes et des solutions détaillées, adaptées aux développeurs macOS.
Problèmes PHP fréquents et solutions
Voici des exemples de problèmes fréquemment rencontrés avec PHP et ses extensions, assortis de leurs solutions.
Erreur ImageMagick "number of supported formats: 0"
Description du problème :
Certains utilisateurs de ServBay rencontrent, lors de l'utilisation de l’extension PHP ImageMagick, l’erreur suivante :
ImageMagick number of supported formats: 0
Cela signifie souvent qu’ImageMagick n’a pas réussi à détecter ou charger les formats d'image pris en charge.
Solution :
Ce problème est généralement lié aux bibliothèques sous-jacentes fournies par ServBay Runtime. Voici les étapes à suivre pour le résoudre :
- Ouvrez l’application ServBay.
- Dans la barre de navigation à gauche, sélectionnez
Packages
(Paquets). - Sur la liste de droite, cherchez puis sélectionnez
ServBay Runtime
. - Vérifiez que
ServBay Runtime
est bien installé et en version1.0.20
ou1.1.20
(ou ultérieure). Si votre version est plus ancienne, cliquez sur le bouton de mise à jour afin d'installer la dernière version disponible. - Une fois ServBay Runtime mis à jour, redémarrez le service PHP que vous utilisez (par exemple PHP 8.1, PHP 8.2, etc.).
Explication technique : Le paquet ServBay Runtime intègre les composants internes de ServBay ainsi que certaines bibliothèques partagées nécessaires aux extensions PHP. Mettre à jour le Runtime permet d’obtenir les versions les plus récentes de ces bibliothèques, ce qui peut résoudre les problèmes de chargement des formats par ImageMagick.
Upload lent de gros fichiers via PHP
Description du problème :
Certains utilisateurs constatent un ralentissement significatif lors de l’upload de fichiers volumineux (supérieurs à 1 Go) via des applications PHP comme Tus-PHP ou NextCloud.
Ce phénomène est souvent lié à la façon dont php-fpm traite le flux de données et interagit avec la fragmentation des fichiers (Chunked Transfer Encoding).
Solutions possibles :
Voici plusieurs recommandations pour améliorer la vitesse de transfert :
Augmenter la valeur de
pm.max_children
dans php-fpmDans la configuration php-fpm par défaut de ServBay, le paramètre
pm.max_children
(nombre maximum de processus enfants) est généralement fixé à10
. Ce nombre relativement faible peut devenir un goulet d'étranglement lors des uploads de grande taille ou en cas de requêtes simultanées.Augmentez cette valeur à un niveau adapté à votre utilisation. Vérifiez également si la configuration
pm
(pm = dynamic
oupm = ondemand
) correspond à votre charge de travail.Instructions :
- Dans la barre de navigation à gauche, sélectionnez la version de PHP utilisée (ex : PHP 8.2).
- Cliquez sur
Configuration
à droite. - Localisez et ouvrez le fichier
php-fpm.conf
. - Recherchez le paramètre
pm.max_children
et augmentez sa valeur. - Sauvegardez et redémarrez le service PHP concerné.
Explication technique : En augmentant le nombre de processus enfants, php-fpm peut traiter davantage de requêtes simultanées. Sur les uploads volumineux, comme chaque processus peut être occupé longtemps, cela permet de réduire le temps d’attente dans la file et d’optimiser les performances globales.
Désactiver le partitionnement des fichiers (au niveau du code applicatif, modification déconseillée sur ServBay)
Cette méthode est moins recommandée car elle nécessite de modifier le code de votre application, ce qui peut effectuer/desactiver des fonctions qui dépendent du chunked transfer. Cependant, dans des cas spécifiques, désactiver ou ajuster la fragmentation côté client ou serveur peut résoudre les problèmes de vitesse liés à php-fpm.
Vérifier et ajuster le paramètre
fastcgi_request_buffering
du serveur Web (Nginx/Caddy)Si vous utilisez Nginx ou Caddy comme serveur Web et que les requêtes transitent vers php-fpm, le paramètre
fastcgi_request_buffering
joue un rôle dans la gestion du flux de données.Nginx : Par défaut, Nginx active
fastcgi_request_buffering on;
, ce qui signifie qu’il reçoit d’abord l’intégralité du fichier uploadé du client avant de le transmettre d’un seul coup à php-fpm. Cela génère un délai important sur de gros fichiers. Changez pourfastcgi_request_buffering off;
afin que Nginx relaie dès réception les données à php-fpm — ce qui accélère le traitement des gros uploads.nginxlocation ~ \.php$ { # ... autres paramètres fastcgi ... fastcgi_request_buffering off; # Ajouter ou modifier cette ligne # ... }
1
2
3
4
5Caddy : L’instruction
php_fastcgi
sur Caddy adopte déjà par défaut un comportement équivalent àfastcgi_request_buffering off;
avec une transmission en flux continu. En cas de configuration personnalisée viareverse_proxy
, assurez-vous de ne pas introduire de mécanismes de buffering additionnels.
Instructions :
- Dans la navigation de gauche dans ServBay, sélectionnez le serveur Web utilisé (Nginx ou Caddy).
- Cliquez sur
Configuration
. - Localisez le fichier de configuration principal (
nginx.conf
ouCaddyfile
), puis ouvrez-le. - Ajoutez ou modifiez
fastcgi_request_buffering off;
dans le bloc de configuration pertinent. - Sauvegardez puis redémarrez le service serveur Web.
Autres vérifications utiles :
- Vérifiez la configuration PHP (
php.ini
) : Confirmez que les valeurs deupload_max_filesize
,post_max_size
etmemory_limit
sont suffisamment élevées pour supporter la taille des fichiers à transférer. Si ces paramètres sont trop faibles, l’upload échouera, même si la vitesse n’est pas en cause. - Consultez les fichiers de log : Analysez les journaux d’erreurs et d’accès de votre serveur Web (Nginx/Caddy) ainsi que les logs d’erreur PHP-FPM. Ces logs, généralement référencés dans
php.ini
via la directiveerror_log
, contiennent des informations essentielles pour diagnostiquer tout comportement anormal.
Bonnes pratiques générales de dépannage PHP
Si vous rencontrez des problèmes liés à PHP dans ServBay, appliquez ces méthodes de diagnostic généralisées :
- Vérifiez la version de PHP et les extensions : Assurez-vous que la version de PHP utilisée est compatible avec votre application, et que toutes les extensions nécessaires (ImageMagick, GD, MySQLi, etc.) sont installées et activées dans ServBay. La fonction
phpinfo()
dans un fichier PHP consulté depuis votre navigateur vous permettra de visualiser la configuration détaillée. - Surveillez l’état des services ServBay : Contrôlez que les services PHP (ex : PHP 8.2), les services serveurs Web (Nginx ou Caddy) ainsi que les bases de données associées (MySQL, PostgreSQL…) sont tous opérationnels dans l’interface ServBay.
- Inspectez les journaux d’erreurs : C’est une étape cruciale pour identifier la cause des incidents.
- Logs d’erreurs PHP : Consultez le fichier spécifié par la directive
error_log
de votrephp.ini
. Pour le développement, assurez-vous quedisplay_errors
est surOn
etlog_errors
également. - Logs de serveur Web : Lisez les logs d’erreurs de Nginx ou Caddy, généralement dans le dossier
logs
de l’installation ServBay, ou spécifiés dans leur configuration. - Logs de l’application ServBay : ServBay peut également enregistrer ses propres messages et erreurs de démarrage.
- Logs d’erreurs PHP : Consultez le fichier spécifié par la directive
- Simplifiez votre environnement de test : Si possible, reproduisez l’erreur dans un environnement minimal — par exemple avec un script PHP basique — pour exclure les problèmes dus à la complexité applicative.
- Consultez la documentation et la communauté ServBay : Les ressources officielles et la communauté d’utilisateurs ServBay peuvent vous fournir des conseils précieux et des solutions à des problèmes connus.
Conclusion
Cet article vous propose des solutions concrètes pour corriger l’erreur ImageMagick et résoudre la lenteur lors des téléchargements de fichiers volumineux sur ServBay, en plus de vous donner des techniques de dépannage générales pour PHP. En vérifiant la version de ServBay Runtime, en ajustant la configuration php-fpm, en modifiant la gestion du buffering côté serveur Web et en étudiant soigneusement les fichiers log, la majorité des problèmes PHP sous ServBay peuvent être résolus. Si malgré ces démarches le problème persiste, appuyez-vous sur les informations issues des logs ou sollicitez la communauté pour obtenir une aide complémentaire.