Configuration PHP

Qu'est ce que PHP ?

PHP (venant de l'acronyme récursif PHP: Hypertext Preprocessor), est un langage de scripts 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 plate-forme 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 :

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 inclue ce système de sessions par défaut.

Quelques liens :

Un exemple simple avec PHP4 (ne fonctionne pas en PHP5) :

1) il faut se connecter en ftp, et se rendre dans le repertoire www/

C'est dans ce répertoire que nous ajouterons le code de votre site web.

Créez un fichier “start.php” (attention a l'extension .php) contenant :

<?php
  session_start();
  session_register ("count");
  $count = 42;
  echo "On enregistre ".$count." <br>";
?>
  Pour aller a 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 etait " . $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 a la racine du site Web (ou du site secondaire) dans lequel se trouve votre script, vous serez donc sur de ne jamais avoir de déconvenues.

Exemple : Vous voulez savoir quel est le chemin correspondant a 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 minuscules) à 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 minuscules) et y stocker votre fichier “global.php” (il se trouve donc dans www/include/global.php vu depuis 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ée

Connexion persistante

Les connexions persistantes ne sont pas possibles du fait de l’architecture et sont effectuées en tant que connexion standard.

Connexion à votre base de donnée Online en PHP

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é à 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”.

L'expéditeur des messages ( From ) doit être obligatoirement le compte email que vous utilisez pour vous authentifier.

<?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";
 
// Entê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 reussi.";
}
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é. 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éer 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éer un second fichier “form2mail.php” que vous mettrez en ligne via FTP.

<?php
 
/* Initialisation des variables */
$from = "webmaster@domaine.ext"; // l'expéditeur : remplacer 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 champs email */
if (!empty($_POST['email'])) {
  $email = $_POST['email'] ;
}
/* Récupération du champs 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 a 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.4 qui est utilisée par défaut pour les fichiers nommés .php54
  • la version 5.5 qui est utilisée par défaut pour les fichiers nommés .php55
  • la version 5.6 qui est utilisée par défaut pour les fichiers nommés .php56

La version 4 de PHP est dépréciée, nous vous recommandons de mettre à jour le code de votre site.
Si cette version vous est vital, il vous faudra faire une demande au support pour pouvoir l'utiliser

La version par défaut pour les fichiers “.php” est la 5.6 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 mutualisé :

Cliquez sur le bouton d'édition pour la version de PHP :

Puis, choisissez la version de votre choix et validez :


Vous pouvez vérifier la version PHP de votre site en appelant une page contenant la fonction phpinfo().

Configurer PHP

Uniquement pour les clients ayant souscrit à une offre d'hébergement Pro ou Illimitée

Vous pouvez configurer complètement votre PHP. Il vous suffit d uploader un fichier “php.ini” à la racine du sous domaine (répertoire “/www/” par exemple), la majorité des options sont modifiables, sauf celles impactant les ressources des serveurs.

Restrictions

Safe Mode

Le safe mode est:

chown

La modifications du propriétaire des fichiers est prohibé, les fichiers uploadés via PHP et/ou via FTP ont déjà votre utilisateur.

system / exec / popen

L'exécution de programme binaires, d'exécutables ou de cgi est prohibé 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.

Timeout

L’exécution de votre script est plus longue que le max_execution_time

Envoi d'emails

Si votre CMS utilise la classe phpmailer (Xoops, WANewsletter par exemple) il vous faudra la mettre a jour. Remplacer le répertoire phpmailer présent dans votre CMS par la dernière version proposé ici http://sourceforge.net/project/showfiles.php?group_id=26031&package_id=252700.