Dans cet article, je souhaite vous donner la procédure étape par étape pour activer ou désactiver les fonctions natives de PHP en modifiant la directive « disable_functions » dans le fichier php.ini.
Parfois, la configuration PHP par défaut sur votre serveur doit être personnalisée pour s'adapter à la compatibilité de votre système avec l'environnement de production.
Je suis l'auteur d'Inspector.dev, le package de surveillance en temps réel pour Laravel et Symfony. Ce package utilise les fonctions natives php pro_open et proc_close pour effectuer le transfert de données de votre serveur vers l'API Inspector de manière asynchrone.
Il peut également être configuré pour utiliser les fonctions CURL natives de PHP qui sont activées par défaut, mais dans ce cas, il enverra les données de surveillance à Inspector de manière synchrone comme le font d'autres packages comme Sentry, Bugsnag, etc. signifie que votre application pourrait ralentir un peu car le moteur php doit attendre avant de mettre fin à la connexion avec le client.
Récemment, certains développeurs m'ont contacté car les fonctions proc_open et proc_close étaient désactivées dans leur configuration php et doivent donc les déverrouiller pour profiter de l'envoi de données asynchrone.
C'est assez rare mais j'ai décidé d'écrire ce tutoriel comme ressource d'assistance pour ce cas d'utilisation.
Le fichier php.ini est LE fichier de configuration de PHP. Le fichier contient une liste de paires clé/valeur appelées « directives ». Les directives sont regroupées en sections, bien que celles-ci soient principalement destinées à des fins d'organisation.
Lorsque PHP démarre, il lit ce fichier et configure des structures de données internes pour stocker la configuration. Tout au long de l'exécution, PHP fait référence à ces structures de données internes pour déterminer comment il doit se comporter dans de nombreux domaines clés, tels que : la gestion et la journalisation des erreurs, les limites de ressources (mémoire, temps d'exécution), les téléchargements de fichiers, les connexions à la base de données, etc.
Pour quelqu'un qui se demande également : PHP peut fonctionner même s'il n'y a pas de fichier php.ini, il appliquera simplement les valeurs par défaut à toutes les directives.
Pour ceux qui ne le connaissent pas, voici un exemple de fichier php.ini :
https://github.com/php/php-src/blob/master/php.ini-production
En modifiant le fichier php.ini, nous pouvons désactiver les fonctions PHP natives que vous ne pourrez pas appeler dans votre code PHP.
Parfois, cette fonctionnalité est utilisée pour restreindre l'utilisation de certaines fonctions dans les environnements d'hébergement partagé, car une mauvaise utilisation de celles-ci peut entraîner des problèmes de sécurité pour les autres utilisateurs. Les fonctions comme exec() sont généralement désactivées, mais parfois les fournisseurs de serveurs sont trop conservateurs et peuvent désactiver les fonctions nécessaires aux tâches de programmation quotidiennes.
Exécutez la commande ci-dessous dans le terminal de votre ordinateur pour obtenir l'emplacement actuel du fichier (cela fonctionne à la fois pour Win et Unix) :
php --ini
Emplacements courants : /etc/php.ini, /etc/php/8.x/php.ini (remplacez x par le numéro de version de votre installation)
Pour éditer des fichiers sur le serveur, je préfère utiliser l'éditeur vim qui devrait être disponible sur n'importe quelle machine Unix.
// Use the file path from the command above sudo vim /etc/php.ini
Faites défiler jusqu'à la directive "disable_functions". Il doit se trouver dans la première moitié du fichier et contenir une liste de fonctions séparées par une virgule.
disable_functions=exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Pour charger les nouvelles configurations, vous devez redémarrer PHP. Les instructions ci-dessous devraient fonctionner sur la plupart des serveurs. Vous pouvez éventuellement rechercher sur Google un système d'exploitation spécifique.
// Change the version of the PHP with what is in use in your machine sudo systemctl restart php8.2-fpm.service
Pour des articles plus techniques, vous pouvez me suivre sur Linkedin ou X.
Inspector est un outil de surveillance de l'exécution de code spécialement conçu pour les développeurs de logiciels. Vous n'avez pas besoin d'installer quoi que ce soit au niveau du serveur, installez simplement le package Laravel ou Symfony et vous êtes prêt à partir.
Si vous recherchez une surveillance HTTP, des informations sur les requêtes de base de données et la possibilité de transférer des alertes et des notifications vers votre environnement de messagerie préféré, essayez Inspector gratuitement. Enregistrez votre compte.
Ou apprenez-en plus sur le site : https://inspector.dev
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3