Maison  >  Article  >  développement back-end  >  Que dois-je faire si phpinfo() ne peut pas sortir de la sécurité du code php ?

Que dois-je faire si phpinfo() ne peut pas sortir de la sécurité du code php ?

青灯夜游
青灯夜游original
2021-06-02 15:06:123196parcourir

Solution au problème selon lequel phpinfo() ne peut pas sortir de la sécurité du code php : ouvrez d'abord le fichier php.ini, recherchez l'élément "short_open_tag", et réglez-le sur "short_open_tag = On" puis redémarrez Apache ; et rechargez le service php.ini. C'est tout.

Que dois-je faire si phpinfo() ne peut pas sortir de la sécurité du code php ?

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1, ordinateur DELL G3

1. Description du problème

J'ai écrit un fichier php test.php, le code est le suivant :

<?php
    echo phpinfo();
?>

Le navigateur l'a visité, mais a renvoyé NULL.

2. Localisation et solution du problème

Après vérification en ligne, le problème rencontré par la plupart des gens est en fait le problème des short_open_tags , leur code est le suivant :

<?
    echo phpinfo();
?>

Solution :

Dans ce cas, vous devez ouvrir le fichier php.ini, trouver "short_open_tag", et commenter la ligne short_open_tag = Off Off puis ouvrir ; short_open_tag = On suffit, puis redémarrez Apache, rechargez le service php.ini et tout ira bien.

Il y a deux autres questions ici. La première est de savoir quel fichier php.ini est chargé par l'exécution de php. Vous pouvez l'exécuter sur la ligne de commande : php --ini pour trouver le php. ini ; La seconde est de savoir comment recharger le fichier php.ini. Si php-fpm est activé sur votre serveur, de manière générale, le redémarrage de php-fpm sera correct. La commande est : service php-fmp restart. Le service fpm n'est pas activé (version plus antérieure de php), généralement le redémarrage du service Apache est OK, la commande est le service httpd restart.

Après avoir suivi les étapes ci-dessus, les problèmes rencontrés par la plupart des gens seront résolus, mais c'est le problème des autres, pas le mien orz...

Impuissant, j'ai senti que cette chose devait être lié à la configuration de php, je suis donc allé sur le site officiel pour lire le document php.ini La configuration suivante est la suivante :

  disable_functions string

Cette commande permet d'interdire certaines fonctions pour des raisons de sécurité. Accepte une liste de noms de fonctions séparés par des virgules comme arguments. Les fonctions désactivées ne sont pas affectées par le mode sans échec. Cette directive ne peut être définie que dans php.ini. Par exemple, il ne peut pas être défini dans httpd.conf

, ce qui signifie que certaines méthodes peuvent être configurées dans php.ini, mais ces méthodes ne peuvent pas être appelées. Ouvrez php.ini pour trouver cette configuration. Effectivement, la méthode phpinfo() est désactivée, comme suit :

disable_functions = phpinfo,system,proc_open,proc_close,show_source,popen,pclose

Je me suis soudain rendu compte que j'avais temporairement supprimé la méthode phpinfo() de Disable_functions, rechargé le fichier php.ini, puis accédé au test. php à nouveau depuis le navigateur. Cette fois, c'est réussi. Oui, le problème est résolu. Cependant, je voudrais rappeler à mes amis que phpinfo() est une information très sensible, il est généralement préférable de ne pas l'exposer au client, je l'ai donc rapidement désactivé après le test.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn