Infos php. Nous servons efficacement les fichiers en utilisant PHP. Utilisation du module de serveur Web

Quelconque Logiciel que vous souhaitez exécuter sur votre serveur Web a certaines exigences auxquelles il doit répondre. Par exemple, WordPress nécessite PHP version 5.2.4 ou supérieure. Selon le serveur, vous pouvez modifier certains paramètres PHP, au contraire, il est interdit d'en modifier d'autres, cependant, vous pouvez obtenir des informations sur chacun d'eux dans le fichier phpinfo. Dans ce tutoriel, vous apprendrez à créer un fichier phpinfo et à connaître les valeurs et le statut des modules PHP. Il peut également être utile pour obtenir des informations sur votre compte d'hébergement telles que max_execution_time, memory_limit, post_max_size et autres.

Avant de commencer ce didacticiel, vous avez besoin des éléments suivants :

  • Accès à votre panneau de contrôle d'hébergement ou à votre compte FTP

Option 1 - Vérification des informations PHP via le panneau de contrôle d'hébergement

Chez Hostinger, les informations PHP de votre compte se trouvent sous Avancé -> Informations PHP... C'est une fonctionnalité très pratique, car vous n'aurez pas besoin de créer de fichiers supplémentaires sur votre hébergement.

Après cela, vous serez redirigé vers une page avec toutes les informations nécessaires sur votre version PHP, les modules et les valeurs. Pour rechercher un module ou une fonction spécifique, utilisez la recherche en appuyant sur le raccourci clavier CTRL + F.

Toutes nos félicitations! Vous avez appris à accéder à vos informations php via votre panneau de contrôle Hostinger.

Option 2 - Vérifiez les informations PHP en créant un fichier phpinfo.php

Ne vous inquiétez pas si votre plate-forme d'hébergement ne prend pas en charge la fonctionnalité indiquée dans Option 1... Le même résultat peut être obtenu en créant fichier spécial dans votre compte d'hébergement. Le fichier affichera également toutes les informations sur votre PHP et sera accessible via le navigateur.

Étape 2.1 - Création d'un fichier phpinfo

Il existe plusieurs façons de créer le fichier phpinfo. Dans ce tutoriel, nous utiliserons. Cependant, le même résultat peut être obtenu en créant un fichier dans votre ordinateur local et en téléchargeant le fichier sur le serveur via.

Connectez-vous à votre panneau de contrôle d'hébergement et ouvrez Gestionnaire de fichiers ... Cliquez sur le bouton Nouveau fichier pour créer un nouveau fichier.

Dans le premier champ, spécifiez le chemin où le nouveau fichier sera créé. De plus, sur le terrain Nouveau nom de fichier Entrer infophp.php... Dans la plupart des cas, vous pouvez laisser le chemin inchangé / public_html... Dans ce cas, le fichier sera créé dans le répertoire racine de votre site.

Étape 2.2 - Modification du fichier

À ce stade, vous avez déjà un fichier vide infophp.php dans le catalogue public_html... Copiez le code suivant dans un fichier et cliquez sur l'icône Sauvegarder dans le coin gauche de l'écran.

Ça y est, vous avez réussi à créer un fichier PHP qui affichera toutes vos options PHP. Comme mentionné précédemment, le même résultat peut être obtenu avec :

  1. Utilisez n'importe quel éditeur de texte et créer un fichier infophp.php sur ton ordinateur.
  2. Ajoutez le code suivant au fichier :
  1. Téléchargez le fichier via FTP dans votre répertoire public_html.

Étape 2.3 - Vérification des informations PHP via le navigateur

Si tout a été fait correctement, vous pouvez maintenant accéder au fichier généré en ajoutant à la fin de votre nom de domaine /pinfohp.php... Par exemple, http://votredomaine.ru/phpinfo.php

Vous devriez voir un résultat similaire lorsque vous ouvrez cette page via un navigateur :

Sur cette page, vous pourrez voir tous vos paramètres PHP.

Conclusion

Ayant fini ce manuel vous avez appris à créer un fichier phpinfo et à vérifier les informations de vos paramètres PHP. Cette information est utile si vous souhaitez connaître vos paramètres d'hébergement ou exécuter un logiciel qui nécessite certains modules PHP.

(PHP 3, PHP 4, PHP 5)

phpinfo - Imprime beaucoup d'informations sur PHP.

La description

int infophp()

Affiche un grand nombre de informations sur l'état actuel de PHP. Cela inclut des informations sur les options et extensions de compilation PHP, la version PHP, les informations sur le serveur et l'environnement (si compilé en tant que module), l'environnement PHP, la version du système d'exploitation, les chemins, les variables principales et locales des options de configuration, les en-têtes HTTP et la licence PHP. Étant donné que chaque système est configuré différemment, phpinfo () est généralement utilisé pour vérifier les paramètres de configuration et la disponibilité des variables prédéfinies sur un système donné. Phpinfo () est également un utilitaire de débogage important car il contient toutes les données EGPCS (Environnement, GET, POST , Cookie, Serveur ). Une sortie peut être spécialisée en passant un ou plusieurs des éléments suivants constant valeurs de bits résumées dans le paramètre optionnel what. Vous pouvez également combiner les valeurs constantes ou binaires correspondantes avec une opération.

Tableau 1. Options de phpinfo()
Nom (constant) Valeur Description INFO_GENERAL1 Chaîne de configuration, emplacement php.ini, date de construction/construction, serveur Web, système, etc. INFO_CREDITS2 PHP 4 crédits. Voir aussi phpcredits() .INFO_CONFIGURATION4 Valeurs locales et principales actuelles des directives php. Voir aussi ini_get() .INFO_MODULES8 Modules chargés et leurs paramètres correspondants INFO_ENVIRONMENT16Environment Informations sur les variables également disponibles dans $ _ENV .INFO_VARIABLES32 Affiche toutes les variables prédéfinies d'EGPCS (Environment, GET, POST, Cookie, ServerP64 et License_LICENSE. Voir aussi licence faq .INFO_ALL-1 Tout ce qui précède. Il s'agit de la valeur par défaut.

Remarque : certaines parties des informations affichées sont désactivées lorsque le paramètre de configuration expose_php est désactivé. Cela inclut les logos et crédits PHP et Zend. également

Si vous deviez envoyer des fichiers non pas directement par le serveur Web, mais avec utiliser PHP(par exemple, pour collecter des statistiques de téléchargement), s'il vous plaît, sous cat.

1. Utilisation de readfile()

La méthode est bonne car elle fonctionne à partir de la boîte. Il vous suffit d'écrire votre propre fonction d'envoi de fichier (un exemple légèrement modifié de la documentation officielle) :

Fonction file_force_download ($ file) (if (file_exists ($ file)) (// vide le buffer de sortie PHP pour éviter de déborder la mémoire allouée au script // si ce n'est pas fait, le fichier sera lu complètement en mémoire ! Si (ob_get_level ()) ( ob_end_clean ();) // force le navigateur à afficher la fenêtre d'enregistrement de l'en-tête du fichier ("Content-Description : Transfert de fichier"); header (" Content-Type: application / octet-stream "); header (" Content-Disposition: attachment; filename = ". basename ($ file)); header (" Content-Transfer-Encoding: binary ") ; header ("Expires : 0"); header ("Cache-Control: must-revalidate"); header ("Pragma: public"); header ("Content-Length:". filesize (fichier $)); // lire le fichier et l'envoyer à l'utilisateur readfile ($ file); exit;))
De cette façon, vous pouvez même envoyer gros fichiers, puisque PHP lira le fichier et le donnera immédiatement à l'utilisateur en plusieurs parties. La documentation indique clairement que readfile() ne devrait pas créer des problèmes de mémoire.

Caractéristiques:

  • Le fichier est lu dans le buffer interne de la fonction readfile(), qui fait 8ko (merci à 2fast4rabbit)

2. Nous lisons et envoyons le fichier manuellement

La méthode utilise le même Drupal lors de l'envoi de fichiers à partir d'un système de fichiers(les fichiers ne sont pas disponibles directement à partir des liens) :

Fonction file_force_download ($ file) (if (file_exists ($ file)) (// vide le buffer de sortie PHP pour éviter de déborder la mémoire allouée au script // si ce n'est pas fait, le fichier sera lu complètement en mémoire ! Si (ob_get_level ()) ( ob_end_clean ();) // force le navigateur à afficher l'en-tête de la fenêtre d'enregistrement du fichier ("Content-Description: File Transfer"); header ("Content-Type: application / octet-stream"); ​header ("Content-Disposition : pièce jointe; filename = ". basename ($ file)); header (" Content-Transfer-Encoding: binary "); header (" Expires: 0 "); header (" Cache-Control: must-revalidate "); header (" Pragma: public "); header (" Content-Length: ". filesize ($ file)); // lit le fichier et l'envoie à l'utilisateur if ($ fd = fopen ($ file," rb ")) (while (! feof ($ fd)) (print fread ($ fd, 1024);) fclose ($ fd);) exit;))
Caractéristiques:

  • Le script attend que le fichier entier soit lu et renvoyé à l'utilisateur.
  • Économise la mémoire du serveur

3. Nous utilisons le module de serveur Web

3a. Apache
Le module XSendFile permet à Apache d'envoyer le téléchargement du fichier à l'aide d'un en-tête spécial. Il existe des versions pour Unix et Windows, sous la version 2.0.*, 2.2.* et 2.4.*

Dans les paramètres de l'hôte, vous devez activer l'interception d'en-tête à l'aide de la directive :
XSendFile activé
Vous pouvez également ajouter à la liste blanche les répertoires où les fichiers peuvent être traités. Important : si vous disposez d'un serveur Windows, le chemin doit inclure une lettre de lecteur en majuscule.

Description des options possibles sur le site du développeur : https://tn123.org/mod_xsendfile/

Exemple d'envoi d'un fichier :

Fonction file_force_download ($ file) (if (file_exists ($ file)) (header ("X-SendFile:". Realpath ($ file)); header ("Content-Type: application / octet-stream"); ​​​​header (" Content-Disposition: pièce jointe; nom de fichier = ". Nom de base (fichier $)); sortie;))

3b. Nginx
Nginx est capable d'envoyer des fichiers prêts à l'emploi via un en-tête spécial.

Pour un fonctionnement correct, vous devez refuser l'accès au dossier directement via fichier de configuration:
emplacement / protégé / (interne; racine / certains / chemin;)
Un exemple d'envoi d'un fichier (le fichier doit se trouver dans le répertoire /some/path/protected) :

Fonction file_force_download (fichier $) (if (file_exists (fichier $))) (en-tête ("X-Accel-Redirect:". $ File); en-tête ("Content-Type: application / octet-stream"); ​​en-tête ( "Contenu -Disposition : pièce jointe ; nom de fichier =". Nom de base (fichier $) ; sortie ;))
Plus d'informations sur la page de documentation officielle

Caractéristiques:

  • Le script se termine immédiatement après l'exécution de toutes les instructions
  • Physiquement, le fichier est envoyé par le module du serveur web lui-même, pas par PHP
  • Consommation minimale de mémoire et de ressources serveur
  • Performance maximum

Mettre à jour: Habrayuser ilyaplot donne Conseil utile qu'il est préférable d'envoyer non pas application / octet-stream, mais le vrai type mime du fichier. Par exemple, cela permettra au navigateur de remplacer programmes requis dans la boîte de dialogue d'enregistrement du fichier.