Table des matières Configuration PHP Qu'est-ce que PHP ? Configuration du PHP d'Online Comment utiliser les sessions ? Répertoire Racine (DocumentRoot) Répertoire d'inclusion (IncludePath) Connexion à une base de données Connexion persistante Connexion à votre base de données Online en PHP Uploader des fichiers Envoyer des emails Créer un formulaire de contact (form2mail) Versions de PHP Changer la Version de PHP de son Hébergement Cloud Configurer PHP Restrictions Safe Mode chown system / exec / popen ASP/CGI Problèmes connus Erreurs 500 Erreur dans un script PHP Configuration PHP Qu'est-ce que PHP ? PHP (venant de l'acronyme récursif PHP: Hypertext Preprocessor), est un langage de script libre principalement utilisé pour être exécuté par un serveur HTTP, mais il peut fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande. 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, on désigne parfois PHP comme une plateforme plus qu'un simple langage. (Définition de Wikipédia) Configuration du PHP d'Online phpinfo() est une fonction du langage PHP, elle permet de connaître les modules activés, la configuration du serveur, les restrictions et les paramètres de compilation du langage . <?php // Affichage des informations sur le PHP utilisé : echo phpinfo(); ?> Vous pouvez consulter les PHPInfos de nos PHP ici : PHP4 PHP5.2 PHP5.4 PHP5.5 PHP5.6 PHP7.0 PHP7.1 La version de PHP par défaut, pour les nouveaux hébergements, est PHP 5.6. A la création de votre hébergement, un fichier phpinfo.php est mis en place. Comment utiliser les sessions ? Les sessions sont un moyen pour conserver des informations pendant une visite, tel que le caddie d'une commande en cours. PHP inclut ce système de session par défaut. Quelques liens : Un petit tutoriel en anglais (niveau débutant) : Partie 1, Partie 2 Un autre tutoriel en anglais La documentation officielle des sessions La création d'un caddie virtuel avec les sessions PHP (niveau confirmé) : Mini Shopping Basket with only PHP4 Sessions Un exemple simple avec PHP4 (ne fonctionne pas en PHP5) : 1) il faut se connecter en ftp, et se rendre dans le répertoire www/ C'est dans ce répertoire que nous ajouterons le code de votre site web. Créez un fichier “start.php” (attention à l'extension .php) contenant : <?php session_start(); session_register ("count"); $count = 42; echo "On enregistre ".$count." <br>"; ?> Pour aller à la page suivante, <A HREF="nextpage.php">cliquez ici</A> Créez un fichier “nextpage.php” contenant : <?php session_start(); session_register("count"); echo "La valeur précédente de count était " . $count ."<br>"; ?> Téléchargez les fichiers dans votre compte 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. Cependant, vous pouvez (devez) utiliser la variable $DOCUMENT_ROOT qui pointe à la racine du site Web (ou du site secondaire) dans lequel se trouve votre script, vous serez donc sûr de ne jamais avoir de déconvenue. Exemple : Vous voulez savoir quel est le chemin correspondant à http://www.monsite.ext/unrepertoire/unautrerepertoire/ Il s’agit de $chemin = “$DOCUMENT_ROOT/unrepertoire/unautrerepertoire/”; Répertoire d'inclusion (IncludePath) Dans le cadre de la réalisation d'un site important, il est possible de centraliser les fichiers fréquemment inclus. Pour cela, un répertoire est ajouté par défaut à la liste de recherche des fichiers inclus. Il n'est pas créé par défaut, pour ce faire, il suffit de créer un répertoire nommé “include” (sans les guillemets et en minuscule) à la racine du site web (ex: “www/include”). Un tel répertoire n'est utilisable qu'à l'intérieur du site où il a été créé. Cela signifie que le répertoire du site Web principal (qui est donc nommé: “www/include”) n'est pas accessible d'un site Web secondaire (comme blog.domaine.ext). Exemple : Vous avez un fichier 'global.php' contenant diverses informations ou méthodes. Vous souhaitez y accéder depuis n'importe où de votre site sans le recopier dans chaque sous-répertoire ou inscrire le chemin relatif jusqu'à ce fichier dans chacun des programmes. On suppose que vos fichiers .php se trouvent dans le site Web principal (www.<mondomaine.ext>) Vous devez donc créer “www/include” (sans les guillemets et en minuscule) et y stocker votre fichier “global.php” (il se trouve donc dans www/include/global.php, vu depuis le FTP) Pour l'appeler depuis un fichier .php, quelque soit l'endroit où il se trouve à l'intérieur du site Web principal, il suffit de faire : <?php include("global.php"); // suite du code... ?> ou encore <?php require("global.php"); // suite du code... ?> (selon la méthode d'inclusion souhaitée) Connexion à une base de données Connexion persistante Les connexions persistantes ne sont pas possibles du fait de l’architecture de notre plate forme d'hébergements Web et sont effectuées en tant que connexions standard. Connexion à votre base de données Online en PHP Voir la section : Connexion à votre base de données Online Uploader des fichiers L'upload de fichiers via PHP est activé, la taille maximale d'un fichier est 10 Mo. Vous devez renommer le fichier uploadé via la fonction move_updloaded_file avant la fin de votre script. Le fichier temporaire (nommée phpXXXXX) est effacé à la fin du script PHP le recevant. <form method="post" enctype="multipart/form-data" action="upload.php"> <p> <input type="file" name="fichier" size="30"> <input type="submit" name="upload" value="Uploader"> </p> </form> <?php if( isset($_POST['upload']) ) // si formulaire soumis { $tmp_file = $_FILES['fichier']['tmp_name']; $name_file = $_FILES['fichier']['name']; if( !is_uploaded_file($tmp_file) ) { exit("Le fichier est introuvable"); } if( !move_uploaded_file($tmp_file, $name_file) ) { exit("Impossible de copier le fichier vers $name_file"); } echo "Le fichier a bien été uploadé et se trouve ici $name_file"; } ?> Envoyer des emails La fonction mail() de PHP est activée, cependant il y a quelques limitations : pas plus de 35 destinataires par appels à la fonction taille des mails limitée à 2Mo détection antispam La fonction mail() renvoie TRUE en cas de succès et FALSE si l'une de ces conditions n'est pas respectée. Nous supposons dans cet exemple que le nom de domaine hébergé est “domaine.ext”. <?php // Mettez ici votre adresse valide $to = "contact@domaine.ext"; // Sujet du message $subject = "Test fonction mail() de PHP"; // Corps du message, écrit en texte et encodage iso-8859-1 $message = "Bonjour,\nl'envoi du mail via PHP a réussi. Le webmaster\n"; // En-têtes du message $headers = ""; // on vide la variable $headers = "From: Webmaster Site <webmaster@domaine.ext>\n"; // ajout du champ From // $headers = $headers."MIME-Version: 1.0\n"; // ajout du champ de version MIME $headers = $headers."Content-type: text/plain; charset=iso-8859-1\n"; // ajout du type d'encodage du corps // Appel à la fonction mail if ( mail($to, $subject, $message, $headers) == TRUE ) { echo "Envoi du mail réussi."; } else { echo "Erreur : l'envoi du mail a échoué."; } ?> Soyez conscient qu'un individu malveillant peut profiter des formulaires de contact pour vous envoyer du spam. En l'appelant plusieurs fois par seconde, il va finir par saturer l'adresse mail contact@domaine.ext que vous avez indiquée. L'ajout d'une procédure de type captcha peut vous aider à éviter ce genre de piratage, et donc la suspension ou l'annulation de votre compte. Créer un formulaire de contact (form2mail) Nous supposons dans cet exemple que le nom de domaine hébergé est “domaine.ext”. Créez un fichier “form.html” que vous mettrez en ligne via FTP. <html> <body> <form action="form2mail.php" method="post"> Entrez votre adresse mail: <input type="text" name="email"><br> Message:<br> <textarea name="message" rows="8" cols="50"></textarea><br> <input type="submit" value="Envoyer le mail"> </form> </body> </html> Créez un second fichier “form2mail.php” que vous mettrez en ligne via FTP. <?php /* Initialisation des variables */ $from = "webmaster@domaine.ext"; // l'expéditeur : remplacez ici domaine.ext par votre domaine $to = "vous@domaine.ext"; // le destinataire : mettez ici votre adresse mail valide /* Préparation */ $subject = "Test fonction mail() de PHP"; // le sujet du mail $email = NULL; $message = NULL; /* Récupération du champ email */ if (!empty($_POST['email'])) { $email = $_POST['email'] ; } /* Récupération du champ message */ if ($email && !empty($_POST['message'])) { $message = "Message envoyé par $email :\n" . $_POST['message']; } /* Envoi*/ if ($email && $message) { // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // En-têtes additionnels $headers .= 'From: Webmaster <$from>' . "\r\n"; /* Appel à la fonction mail */ if (!mail($to, $subject, $message, $headers)){ echo "Erreur: Impossible d'envoyer le mail"; } else { echo "Envoi réussi"; } } else { echo "Erreur: vous devez spécifier une adresse email valide et un texte\n"; } ?> Versions de PHP Online vous propose plusieurs versions de PHP: la version 5.6 la version 7.0 la version 7.1 Les versions antérieures à PHP 5.6 sont dépréciées, nous vous recommandons de mettre à jour le code de votre site. Si cette version vous est vitale, il vous faudra faire une demande au support pour pouvoir l'utiliser. La version par défaut pour les fichiers “.php” est la 7.1 pour les nouveaux hébergements. Pour les anciens hébergements, la version par défaut peut être changée directement via la console de gestion de votre hébergement web : Cliquez sur le bouton d'édition pour la version de PHP : Puis, choisissez la version de votre choix et validez : Changer la Version de PHP de son Hébergement Cloud Tous nos hébergements Cloud utilisent par défaut la version 5.6 de PHP. Cependant, la version 7.1 est également disponible. Pour l'utiliser, il vous faudra ajouter un fichier .htaccess à la racine du dossier concerné. Il faudra y ajouter la ligne suivante : AddHandler ${php7} php Ainsi, par défaut, pour le dossier en question, votre hébergement utilisera la version 7.1 de PHP. Vous pouvez vérifier la version PHP de votre site en appelant une page contenant la fonction phpinfo(). Configurer PHP Cette option est possible pour toutes nos offres. Vous pouvez configurer complètement votre PHP sur les versions 5.3 et supérieures. Il vous suffit d'uploader un fichier “.user.ini” à la racine du sous domaine (répertoire “/www/” par exemple), la majorité des options sont modifiables, sauf celles impactant les ressources des serveurs. Les valeurs pouvant être modifiées se trouvent ici avec le paramètre modifiable PHP_INI_ALL http://php.net/manual/fr/ini.list.php Restrictions Safe Mode Le safe mode est: activé en PHP 4 non activé en PHP 5.2 n'existe plus en PHP 5.4 (http://php.net/manual/fr/features.safe-mode.php) chown La modification du propriétaire des fichiers est prohibée, les fichiers uploadés via PHP et/ou via FTP ont déjà votre utilisateur. system / exec / popen L'exécution de programmes binaires, d'exécutables ou de cgi est prohibée pour des raisons de sécurité. ASP/CGI Pas d'asp, ni de cgi (cgi-bin), ni de programmes exécutables. Problèmes connus Erreurs 500 Il peut y avoir plusieurs causes, en voici certaines: Erreur dans le fichier .htaccess Vous pouvez obtenir cette erreur à cause de votre fichier .htaccess pour les raisons, non exhaustives, suivantes : présence d'une directive non autorisée présence d'une erreur de syntaxe fichier .htaccess transféré en binaire, en lieu et place du transfert texte absence d'une ligne vide finale Vous pouvez stopper l'erreur 500 en renommant votre fichier .htaccess en htaccessX.txt Vous devrez ensuite créer un fichier .htaccess vide et y rajouter une à une les directives jusqu'à trouver la responsable de l'erreur 500. Erreur dans un script PHP Une erreur 500 peut provenir d'une erreur dans le code PHP. Pour le déboguer, vous pouvez modifier le `error_reporting` et `display_errors` dans un fichier user.ini comme décrit dans “Configurer PHP”. Timeout L’exécution de votre script est plus longue que le max_execution_time Envoi d'email Si votre CMS utilise la classe phpmailer (Xoops, WANewsletter par exemple), il vous faudra la mettre à jour. Remplacez le répertoire phpmailer présent dans votre CMS par la dernière version proposée ici https://github.com/PHPMailer/PHPMailer.