Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Révision précédente | ||
php [2020/03/22 21:27] |
php [2023/10/19 19:48] (Version actuelle) Elodie [Liste des branches PHP] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Configuration PHP ====== | ||
+ | ===== Qu'est ce que PHP ? ===== | ||
+ | |||
+ | PHP (venant de l' | ||
+ | |||
+ | PHP est un langage procédural disposant en version 5 de fonctionnalités de modèle objet complètes. En raison de la richesse de sa bibliothèque, | ||
+ | |||
+ | ===== Configuration de PHP ===== | ||
+ | |||
+ | " | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | // Affichage des informations sur le PHP utilisé : | ||
+ | echo phpinfo(); | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Vous pouvez consulter les différents PHPInfo de la plateforme de FranceServ Hébergement à cette adresse : | ||
+ | |||
+ | https:// | ||
+ | |||
+ | FranceServ Hébergement propose à ses hébergés le choix entre les branches PHP 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0 et 8.1 dans leurs dernières versions respectives. | ||
+ | |||
+ | Il est possible de choisir la version de la branche du moteur de PHP pour chacun de ses sites internet à l'aide du gestionnaire de son site directement dans son gestionnaire client. | ||
+ | ===== Afficher/ | ||
+ | |||
+ | Par défaut, les messages d' | ||
+ | |||
+ | Afficher les erreurs sur un site web est pratique pour comprendre d'où viens un problème mais ça à aussi ses inconvénients. Il est recommandé d' | ||
+ | |||
+ | Si vous avez une erreur de développement PHP ou .htaccess, vous avez 2 moyens pour les analyser. Mais avant tout, il vous faut maintenir à jour la ou les solutions Web que vous utilisez afin de suivre les mises à jours. | ||
+ | |||
+ | ==== Manuellement : ==== | ||
+ | |||
+ | Pour qu'un fichier PHP affiche les erreurs PHP, le code suivant est à insérer tout en haut du code de votre page PHP où se trouve l' | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | // Afficher les erreurs à l' | ||
+ | ini_set(' | ||
+ | // Nom du fichier log | ||
+ | ini_set(' | ||
+ | // Enregistrer les erreurs dans un fichier log | ||
+ | ini_set(' | ||
+ | // Afficher les erreurs et les avertissements | ||
+ | error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT ); | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Pour aller plus loin, sachez qu'il est bon de ne pas spécifier ~E_DEPRECATED dans le error_reporting() afin de vérifier que l'on n' | ||
+ | |||
+ | ===== Comment utiliser les sessions ? ===== | ||
+ | |||
+ | Les sessions sont un moyen pour conserver des informations pendant une visite. | ||
+ | |||
+ | Les sessions sont activées chez FranceServ Hébergement par défaut. | ||
+ | |||
+ | Vous n'avez pas à créer de répertoire pour vos sessions comme elles sont stockées au sein même du serveur. Vous pouvez y accéder à l'aide des fonctions sessions de PHP mais ne pouvez pas y accéder directement avec d' | ||
+ | |||
+ | Un exemple simple : | ||
+ | |||
+ | Créez un fichier start.php (attention a l' | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | session_start(); | ||
+ | session_register (" | ||
+ | $count = 42; | ||
+ | echo "On enregistre " | ||
+ | ?> | ||
+ | Pour aller a la page suivante, <A HREF=" | ||
+ | </ | ||
+ | |||
+ | Créez un fichier “nextpage.php” contenant : | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | session_start(); | ||
+ | session_register(" | ||
+ | echo "La valeur précédente de count etait " . $count ."< | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Téléchargez les fichiers dans votre espace FTP dans le dossier de votre site et faites un test en appelant l'URL correspondante de start.php | ||
+ | |||
+ | ===== Répertoire Racine (DocumentRoot) ===== | ||
+ | |||
+ | Il est primordial de ne jamais utiliser de chemin absolu codé en ‘dur’, car le chemin est susceptible de changer et votre site serait alors inaccessible. | ||
+ | |||
+ | Aussi, vous pouvez(devez) utiliser la variable $_SERVER[' | ||
+ | |||
+ | Exemple : Vous voulez savoir quel est le chemin correspondant a http:// | ||
+ | |||
+ | Il s’agit de $chemin = $_SERVER[' | ||
+ | |||
+ | ===== Connexion à une base de donnée ===== | ||
+ | |||
+ | Les connexions persistantes ne sont pas possibles du fait de l’architecture et sont effectuées en tant que connexion standard. | ||
+ | |||
+ | ===== Temps d’exécution maximum d'un script PHP ===== | ||
+ | |||
+ | Le temps d’exécution maximum d'un script PHP est soit de 3 minutes pour l' | ||
+ | |||
+ | La fonction set_time_limit() de PHP ne figure pas/plus parmi les fonctions interdites car elle était trop souvent utilisée à tort afin de définir un temps d’exécution maximum illimité. | ||
+ | |||
+ | Lorsque le temps d’exécution maximum d'un script PHP était redéfinie à l'aide de cette fonction, une alerte apparaissait et beaucoup d' | ||
+ | |||
+ | Même si cette fonction n'est plus interdite, n’espérez pas non plus faire fonctionner un script PHP pendant plus de votre temps accordé, un robot vérifie et termine de force les scripts PHP excédant ce temps d’exécution maximum. | ||
+ | ===== Uploader des fichiers ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code php .user.ini> | ||
+ | upload_max_filesize = 400M | ||
+ | post_max_size = 400M | ||
+ | </ | ||
+ | |||
+ | La principale source de piratage et de destruction d'un site Internet provient d'un formulaire d' | ||
+ | |||
+ | Pour des raisons de sécurité, il faut veiller à ce qu'un script PHP ne puisse pas envoyer de fichier PHP, car un internaute pourrait utiliser le formulaire d' | ||
+ | |||
+ | C'est pour cette raison qu'il faut, dans un premier temps, bloquer l’exécution de PHP éventuel dans le répertoire où sont envoyés les fichiers via PHP. | ||
+ | |||
+ | Soit en plaçant un fichier .htaccess dans le répertoire des envois : | ||
+ | |||
+ | < | ||
+ | <Files ^(*.php|*.phps)> | ||
+ | order deny,allow | ||
+ | deny from all | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Ou directement à la racine de votre site, ce qui est plus sécurisé : | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <Files ^(*.php|*.phps)> | ||
+ | order deny,allow | ||
+ | deny from all | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Il ne faut jamais permettre à votre script PHP d' | ||
+ | |||
+ | Vous devez renommer le fichier envoyé avec l'aide de la fonction move_updloaded_file avant la fin de votre script. Le fichier temporaire est effacé à la fin de l' | ||
+ | |||
+ | Voici un script PHP sécurisé pour permettre l' | ||
+ | |||
+ | <code php upload.php> | ||
+ | < | ||
+ | < | ||
+ | <form enctype=" | ||
+ | <input type=" | ||
+ | Le fichier image : <input name=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <?php | ||
+ | // On vérifie que le formulaire est envoyé. | ||
+ | if( isset($_POST[' | ||
+ | { | ||
+ | // On vérifie qu'il y a bien un fichier à envoyer et qu'il ne comporte pas d' | ||
+ | if((!empty($_FILES[" | ||
+ | { | ||
+ | // On pourrait récupérer le type mime du fichier envoyé mais un pirate peut | ||
+ | // toujours modifier cette information en HTML. Dans la mesure où l'on | ||
+ | // n' | ||
+ | // PHP interne qui ne fonctionne qu' | ||
+ | // sécurisée car elle est exécutée après l' | ||
+ | // temporaire du serveur, il n'est alors plus possible de modifier les | ||
+ | // propriétés du fichier pour tromper la mémoire interne. | ||
+ | // PS. L' | ||
+ | // la fonction getimagesize() mais préférer la fonction finfo_open() pour | ||
+ | // vérifier un envoi d' | ||
+ | // $upload_internal = getimagesize($_FILES[' | ||
+ | // Il est possible d' | ||
+ | // getimagesize(), | ||
+ | $upload_internal = false; | ||
+ | $finfo = finfo_open(FILEINFO_MIME_TYPE); | ||
+ | $mimetype = finfo_file($finfo, | ||
+ | if ($mimetype == ' | ||
+ | { | ||
+ | $upload_internal = true; | ||
+ | } | ||
+ | |||
+ | // On récupère l' | ||
+ | $filename = basename($_FILES[' | ||
+ | $ext = substr($filename, | ||
+ | |||
+ | // On vérifie que : | ||
+ | // 1) le fichier interne est une image, | ||
+ | // 2) le poid du fichier est inférieur à 350 Ko | ||
+ | if ( ($upload_internal) && ($_FILES[" | ||
+ | { | ||
+ | // On détermine où sauvegarder le fichier final | ||
+ | $newname = dirname(__FILE__).'/ | ||
+ | // On vérifie que le fichier final n'a pas déjà été envoyé pour ne pas le remplacer | ||
+ | if (!file_exists($newname)) | ||
+ | { | ||
+ | // On tente de déplacer le fichier temporaire dans son empalcement final | ||
+ | if ((move_uploaded_file($_FILES[' | ||
+ | { | ||
+ | echo "Le fichier a bien été envoyé et se trouve à cet emplacement : " | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Ce script PHP d' | ||
+ | ===== Envoyer des emails ===== | ||
+ | |||
+ | La fonction mail() de PHP est activée par défaut. Pour en savoir plus sur son utilisation, | ||
+ | |||
+ | [[mail# | ||
+ | |||
+ | Pour information, | ||
+ | |||
+ | Soyez conscient qu'un individu malveillant peut profiter des formulaires de contact pour vous envoyer du spam. En l' | ||
+ | ===== Créer un formulaire de contact (form2mail) ===== | ||
+ | |||
+ | Nous supposons dans cet exemple que le nom de domaine hébergé est “domaine.ext”. | ||
+ | |||
+ | Créer un fichier “form.html” que vous mettrez en ligne via FTP. | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | <form action=" | ||
+ | Entrez votre adresse mail: <input type=" | ||
+ | Message:< | ||
+ | < | ||
+ | <input type=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Créer un second fichier “form2mail.php” que vous mettrez en ligne via FTP. | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | |||
+ | /* Initialisation des variables */ | ||
+ | $from = " | ||
+ | $to = " | ||
+ | |||
+ | /* Préparation */ | ||
+ | $subject = "Test fonction mail() de PHP"; // le sujet du mail | ||
+ | $email = NULL; | ||
+ | $message = NULL; | ||
+ | |||
+ | /* Récupération du champs email */ | ||
+ | if (!empty($_POST[' | ||
+ | $email = $_POST[' | ||
+ | } | ||
+ | /* Récupération du champs message */ | ||
+ | if ($email && !empty($_POST[' | ||
+ | $message = " | ||
+ | } | ||
+ | |||
+ | /* Envoi*/ | ||
+ | if ($email && $message) | ||
+ | { | ||
+ | |||
+ | /* En-têtes obligatoires du message */ | ||
+ | $headers = "From: Webmaster < | ||
+ | $headers .= "To: Contact < | ||
+ | /* $headers .= " | ||
+ | $headers .= " | ||
+ | |||
+ | / | ||
+ | if (!mail($to, $subject, $message, $headers)){ | ||
+ | echo " | ||
+ | } else { | ||
+ | echo "Envoi réussi"; | ||
+ | } | ||
+ | } | ||
+ | else { | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Quand vous transférez votre fichier .htaccess, vérifiez que le mode de transfert FTP est " | ||
+ | |||
+ | Le safe mode n'est pas activé. | ||
+ | |||
+ | Astuce : | ||
+ | |||
+ | Remplacez la ligne : | ||
+ | echo "Envoi réussi"; | ||
+ | |||
+ | par une ligne du style : | ||
+ | header(" | ||
+ | |||
+ | car en affichant uniquement un echo, le visiteur peut actualiser sa page à l'aide de la touche F5 pour envoyer le mail le nombre de fois qu'il actualise et flooder votre boite mail de contact. | ||
+ | |||
+ | |||
+ | ===== system / exec / popen ===== | ||
+ | |||
+ | Les fonctions PHP systèmes sont possibles chez FranceServ Hébergement, | ||
+ | |||
+ | Vous pouvez néanmoins autoriser vos sites à accéder à l’ensemble de votre espace d’hébergement sans aucune limitation et autoriser les fonctions systèmes PHP. Pour ce faire, rendez-vous dans la liste de vos sites https:// | ||
+ | ===== ASP/CGI ===== | ||
+ | |||
+ | Pas d'asp, ni de cgi (cgi-bin), ni de programmes exécutables. | ||
+ | |||
+ | ===== Liste des branches PHP ===== | ||
+ | |||
+ | FranceServ hébergement vous propose différentes branches du moteur PHP dans leurs dernières versions. Il est fortement recommandé de toujours utiliser la branche PHP la plus récente stable afin de bénéficier d'une plus grande sécurité, stabilité et rapidité d' | ||
+ | |||
+ | Pour changer la branche PHP de votre site chez FSH, il vous suffit de vous rendre dans la liste de vos sites via votre gestionnaire client (https:// | ||
+ | |||
+ | Attention, sachez qu’il ne suffit pas de changer la branche PHP pour que votre site soit à jour, il vous faut préalablement le mettre à jour (voir la documentation de la solution Web que vous utilisez) avant de changer sa branche PHP. Sans quoi, il se pourrait qu'il ne fonctionne plus correctement sur cette nouvelle branche avec des erreurs HTTP 500 par exemple, car votre site Internet ne serait pas compatible. | ||
+ | |||
+ | Vous pouvez cependant tester que votre site fonctionne correctement sur cette branche PHP et si ce n’est pas le cas, revenir à la branche précédente, | ||
+ | |||
+ | Voici un rappel des branches PHP disponibles : | ||
+ | |||
+ | | Branche | ||
+ | | 8.2 | 08/12/2025 | {{icon> | ||
+ | | 8.1 | 25/11/2024 | {{icon> | ||
+ | | 8.0 | 21/11/2023 | {{icon> | ||
+ | | 7.4 | 28/11/2022 | {{icon> | ||
+ | | 7.3 | 06/12/2021 | {{icon> | ||
+ | | 7.2 | 31/12/2020 | {{icon> | ||
+ | | 7.1 | 01/12/2019 | {{icon> | ||
+ | | 7.0 | 03/12/2018 | {{icon> | ||
+ | | 5.6 | 31/12/2018 | {{icon> | ||
+ | |||
+ | Voir toutes les branches de la plateforme d' |