Comment utiliser PHP(version 7.x) sur un Hébergement Web Gandi

Ce type d’instances vous permet d’héberger des sites Web dynamiques ou statiques en utilisant PHP et l’une des bases de données disponibles.

Prérequis

Vous devez avoir un client de transfert de fichiers qui peut télécharger des fichiers via SFTP (comme FileZilla), ou Git et un client SSH pour pousser et déployer du code depuis la ligne de commande.

Support des versions

Hébergement Web supporte actuellement PHP 7.2, PHP 7.3, PHP 7.4, PHP 8.0, PHP 8.1 et PHP 8.2 uniquement sur l’installation automatique de Wordpress.

Pour savoir comment mettre à jour votre version de PHP sur votre instance vous pouvez vous référer à cette page de notre documentation : Mise à niveau du langage de votre instance

Fonctionnement général

Votre instance peut héberger un certain nombre de sites Web PHP ou HTML statique. Pour chacun de vos sites Web, vous pouvez enregistrer chacun d’entre eux en tant que nouveau site sur votre Hébergement Web Gandi.

Chaque Site reçoit son propre dossier à l’intérieur de votre instance. Les fichiers téléchargés dans ces dossiers via sFTP seront servis aux URLs correspondantes. Chaque site dispose également de son propre dépôt git, de sorte que vous pouvez pousser et déployer du code pour chacun d’entre eux indépendamment.

Le nombre de requêtes que votre instance peut servir n’est limité que par sa taille, que vous pouvez mettre à niveau à tout moment pour accueillir plus de visiteurs. Vous pouvez également utiliser le service de mise en cache HTTP intégré gratuit de la plate-forme pour obtenir des performances maximales.

Vous pouvez également créer un nombre illimité de bases de données et d’utilisateurs de base de données sur chaque instance (par exemple, une base de données et un utilisateur de base de données par site). Vous n’êtes limité que par l’espace de stockage disponible sur votre instance, que vous pouvez également augmenter à tout moment. Toutes les bases de données peuvent être gérées à partir du panneau de contrôle basé sur le Web ou des clients en ligne de commande via la console d’urgence SSH.

Chaque instance reçoit également son propre nom d’utilisateur (généré par la plate-forme) et son propre mot de passe (choisi par vous). Ces informations d’identification sont utilisées pour accéder à toutes les interfaces de gestion dédiées de l’instance :

  • Panneau de contrôle Web et console SSH pour la gestion des processus, des bases de données, des journaux et des fichiers.

  • sFTP et git+SSH pour la gestion des fichiers et des dépendances.

Vous pouvez également vous connecter à sFTP, git et SSH en utilisant les clés SSH au lieu du mot de passe.

Vous trouverez plus de détails dans les sections ci-dessous.

Gestion des dépendances

Vous pouvez utiliser Composer pour gérer les dépendances de Hébergement Web en ajoutant les fichiers composer.json et composer.lock` au dossier ../htdocs de votre projet.

Pour que Hébergement Web installe vos dépendances, vous devrez utiliser le workflow Git+SSH pour déployer votre code, au lieu de télécharger vos fichiers avec sFTP.

  1. Placez votre fichier composer.phar à la racine de votre dossier projet.

  2. Lancez Composer pour installer les dépendances localement.

  3. Ajoutez les deux fichiers Composer, composer.json et composer.lock à votre arbre git.

  4. Poussez votre code vers le dépôt git de votre site.

  5. Déployer le code avec SSH

Consultez notre tutoriel Composer pour un exemple complet.

Sites

Chaque Site que vous créez via l’interface de gestion de Gandi générera un nouveau répertoire dans votre instance.

Vous téléchargerez vos fichiers via sFTP vers votre instance dans le répertoire de votre Site.

Voici un exemple de chemin absolu vers le répertoire htdocs d’un Site :

/lamp0/web/vhosts/www.votrenomdedomaine.com/htdocs/

where « « www.votrenomdedomaine.com est le nom du Site que vous avez spécifié dans la page d’administration de votre instance.

Journaux

Vous pouvez voir vos logs PHP et Apache depuis le panneau de contrôle de votre instance, sFTP ou la console SSH.

Journaux Apache:

error.log: Contient toutes les erreurs liées au serveur Web Apache. Il est recommandé de vérifier régulièrement ces journaux pour détecter d’éventuels problèmes de configuration (mauvaises directives dans le fichier .htaccess, fichiers d’index manquants, etc).

Journaux PHP:

admin-error.log: Les journaux PHP exécutés sur la partie administration de votre instance. fpm.log: Les journaux relatifs à l’interpréteur PHP. C’est ici que vous pouvez voir si le nombre maximum de processeurs PHP est atteint. www-error.log: Les journaux PHP exécutés sur la partie publique de votre instance.

Comprendre les journaux

Note

Par défaut, les journaux se trouvent dans le fuseau horaire UTC.

Journaux Apache

[Thu Jun 14 12:08:45.199853 2012] [mpm_event:notice] [pid 186:tid 3557842618176] AH00489: Apache/2.4.1 (Unix) configured -- resuming normal operations
[Thu Jun 14 12:08:45.199869 2012] [core:notice] [pid 186:tid 3557842618176] AH00094: Command line: '/usr/sbin/apache2 -d /srv/data/.config/apache -f /srv/data/.config/apache/apache2.conf -D lamp0-1'
[Thu Jun 14 15:08:45.213486 2012] [mpm_event:notice] [pid 186:tid

Ces lignes indiquent que le serveur web a été démarré.

Journaux PHP

[08-Jun-2012 12:56:29] WARNING: [pool www] server reached max_children setting (x), consider raising it

Cette alerte se produit lorsque PHP-FPM a atteint le nombre maximum de processus simultanés pour PHP. Le nombre maximum de processus simultanés est défini en fonction de la taille de votre instance (2 sur un pack S, 4 sur un M, 8 sur un L, etc). Si cette erreur se produit trop fréquemment, vous devriez envisager d’augmenter la taille de votre Hébergement Web Gandi. Lorsque vous voyez [pool www], c’est le nombre de processus en cours d’exécution sur la partie publique de votre instance,[pool admin] désigne la partie admin de la procédure.

[05-Jun-2012 09:08:36] WARNING: [pool admin] 'user' directive is ignored when FPM is not running as root

Cette alerte n’est pas une erreur et peut-être ignorée.

Bases de données

Vous pouvez choisir parmi deux types de bases de données : MySQL et PostgreSQL.

Vous pouvez tous les gérer via leurs interfaces de gestion web (PHPMyAdmin ou phpPgAdmin respectivement) ou via leurs interfaces de ligne de commande, accessibles via la console SSH.

MySQL

MySQL est disponible pour une utilisation avec des instances PHP sur un Hébergement Web Gandi.

Vous pouvez vous connecter au service de base de données MySQL sur localhost. L’utilisateur par défaut est root et aucun mot de passe n’est requis par défaut. Cependant, vous devez créer des informations d’identification sûres pour une utilisation dans le monde réel. Vous pouvez également utiliser la base de données default_db pour des réglages et des tests rapides.

Vous pouvez créer autant d’utilisateurs et de bases de données que vous le souhaitez ; vous n’êtes limité que par votre espace disque, que vous pouvez augmenter à tout moment jusqu’à 1 To.

Vous pouvez gérer votre base de données MySQL avec les outils shell standard (mysql, mysqldump, etc.) via la console SSH, ou depuis la console d’administration web avec PHPMyAdmin. Consultez l’article de référence sur la gestion de MySQL sur Hébergement Web pour en savoir plus.

Les instances PHP sont livrées avec des bibliothèques préinstallées pour accéder à votre base de données MySQL à partir de votre code : mysql, mysqli et PDO.

Ci-dessous se trouve un exemple de code PHP minimaliste pour tester la connexion à la base de données sur Hébergement Web en utilisant les paramètres de connexion par défaut :

index.php

<?php

  function test_mysql_conn() {
    $mysql_server = 'localhost';
    $mysql_user = 'root';
    $mysql_pass = '';
    $mysql_db = 'default_db';

    $conn = new mysqli($mysql_server, $mysql_user, $mysql_pass, $mysql_db);
    if ($conn->connect_error) {
      error_log("Connection to MySQL failed: " . $conn->connect_error);
      return "NOT WORKING";
    }
    return "OK";
  };

?>
<html>
  <head>
    <title>PHP MySQL sur un Hébergement Web Gandi</title>
  </head>
  <body>
    <p>MySQL connection: <?php echo test_mysql_conn(); ?>.</p>
  </body>
</html>

PostgreSQL

PostgreSQL est disponible pour Hébergement Web avec PHP.

Le service PostgreSQL de votre instance sera accessible sur localhost, au port 5432.

Par défaut, vous pouvez utiliser l’utilisateur hosting-db` sans mot de passe pour vous connecter à la base de données par défaut, appelée postgres. Nous vous recommandons de créer des informations d’identification sécurisées pour une utilisation dans le monde réel.

Vous pouvez créer autant d’utilisateurs et de bases de données que vous le souhaitez ; vous n’êtes limité que par votre espace disque, que vous pouvez augmenter à tout moment jusqu’à 1 To.

Vous pouvez gérer votre base de données PostgreSQL avec les commandes shell standard via la console SSH (psql, pg_dump, etc.), ou depuis le Panneau de contrôle en utilisant phpPgAdmin. Consultez l’article de référence sur la gestion de PostgreSQL sur Hébergement Web pour en savoir plus.

Les instances PHP sont livrées avec des bibliothèques préinstallées pour accéder à votre base de données PostgreSQL à partir de votre code : php-postgresql``et ``PDO.

Ci-dessous se trouve un exemple de code PHP minimaliste pour tester la connexion à la base de données sur Hébergement Web en utilisant les paramètres par défaut :

index.php

<?php

  function test_pg_conn() {
    $pg_conn_string = "host='localhost' user='hosting-db' dbname='postgres'";
    $conn = pg_connect($pg_conn_string);
    $conn_status = pg_connection_status($conn);
    if ($conn_status === PGSQL_CONNECTION_OK) {
      return "OK";
    } else {
      error_log("Connection to PostgreSQL failed: " . $conn_status);
      return "NOT WORKING";
    };
  };

?>
<html>
  <head>
    <title>PHP PostgreSQL sur un Hébergement Web Gandi</title>
  </head>
  <body>
    <p>PostgreSQL connection: <?php echo test_pg_conn(); ?>.</p>
  </body>
</html>