Base de connaissances

1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !

Rechercher

Ce guide concerne ImageMagick, une suite logicielle puissante pour la manipulation d'images, disponible sur les Hébergements Web et Serveurs Cloud Infomaniak.

 

Installation simplifiée : Pour installer ImageMagick ou ses extensions, il est recommandé d'utiliser Fast Installer depuis votre Manager.

 

ImageMagick et solutions de manipulation d'images

Plusieurs outils sont Ă  votre disposition pour traiter vos visuels (redimensionnement, conversion, filigranes) :

  1. ImageMagick (CLI) : la suite principale utilisable en ligne de commande (via SSH) ; la commande moderne est magick, mais l'ancienne syntaxe convert reste disponible.
  2. Extension PHP imagick : c'est la solution la plus courante pour les sites web (WordPress, etc.) ; elle permet d'utiliser ImageMagick directement dans vos scripts PHP.
  3. Bibliothèque GD : une alternative plus légère, souvent pré-installée, idéale pour des manipulations simples (miniatures, texte sur image).
  4. PerlMagick : interface dédiée aux scripts Perl pour accéder aux fonctionnalités d'ImageMagick.

 

Chemins d'accès et commandes

Sur les infrastructures Infomaniak, ImageMagick est installé de manière standard. Les exécutables se situent dans le répertoire suivant :

/usr/bin/

Voici les principales commandes disponibles :

CommandeUsage principal
magick (ou convert)Convertir, redimensionner et transformer des images.
identifyObtenir les métadonnées d'un fichier (format, taille, etc.).
mogrifyAppliquer une modification directement sur le fichier original.
compositeSuperposer plusieurs images (ex: ajout d'un logo en filigrane).

Pour tester la présence du module Perl Image::Magick, vous pouvez utiliser la commande suivante :

perl -e 'use Image::Magick; print "Installed\n"';

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide explique comment gĂ©rer Memcached et notamment savoir si ce système de mise en cache en mĂ©moire fonctionne correctement sur votre Serveur Cloud managĂ©.

 

PrĂ©requis 

 

Vérifier l'exécution de Memcached

Afin de vérifier le bon fonctionnement de Memcached:

  1. Copiez le code suivant dans un fichier PHP (connexion au serveur memcache local): 

    $fp = fsockopen("localhost", 11211);
    if ($fp) {
    // on demande les stats
    fwrite($fp, "stats\n");
    while (!feof($fp)) {
    $buf = rtrim(fgets($fp));
    if (preg_match('/^STAT curr_items ([0-9]+)$/', $buf, $matches)) {
    // le nombre d'items stockes
    print $matches[1] . PHP_EOL;
    } elseif (preg_match('/(END|ERROR)/', $buf)) {
    // fin des stats
    break;
    }
    }
    fclose($fp);
    } else {
    print "Error: cannot connect to local memcached server: $!" . PHP_EOL;
    }
  2. Téléchargez le fichier PHP sur votre hébergement.
  3. Exécutez le fichier PHP.

Le script renvoie le nombre d'éléments mis en cache dans la mémoire du serveur.

 

Activer Memcached sur…

… Prestashop

L'intégration native de Memcached dans l'application Prestashop simplifie sa configuration. Pour l'activer:

  1. Accédez à votre espace d'administration Prestashop.
  2. Rendez-vous dans l'onglet Paramètres avancés.
  3. Sélectionnez Performances.
  4. Choisissez Oui dans le menu déroulant sous Utiliser le cache dans la section Mise en cache.
  5. Sélectionnez CacheMemcached.
  6. Ajoutez un serveur en fournissant les informations requises telles que
    1. l'adresse IP: 127.0.0.1
    2. le port: 11211
    3. le poids: 1

Vous pouvez vérifier les informations en cliquant sur le bouton "Tester le serveur" avant de les enregistrer en bas de la section "Mise en cache".

Une fois cette étape terminée, votre application PrestaShop est prête à utiliser Memcached pour mettre en cache certains appels d'API, appels de base de données et objets.


Cette FAQ a été utile?

Ce guide permet de résoudre un problème sur le CMS Prestashop v9.x concernant la génération de factures PDF depuis le panneau d'administration (Back Office), particulièrement lorsque la langue française est utilisée.

 

Le problème

Lors de la tentative de visualisation ou de téléchargement d'une facture PDF pour une commande en langue française, PrestaShop (en version 9.x) retourne une Erreur 500. Ce dysfonctionnement est lié à une incompatibilité entre la librairie de génération de PDF (TCPDF) utilisant la police par défaut (helvetica) et les configurations d'hébergement.

 

Définir une police compatible

La solution consiste à forcer l'utilisation de la police freesans, plus compatible, via un fichier de configuration personnalisé.

Il est fortement recommandé de créer un fichier defines_custom.inc.php. Cette méthode est la plus sûre car elle assure que la correction ne sera pas perdue lors des mises à jour du cœur de PrestaShop.

Pour cela:

  1. Accédez à votre installation PrestaShop 9.x via FTP ou le Gestionnaire de fichiers.
  2. Naviguez jusqu'au répertoire /config/.
  3. Créez un nouveau fichier nommé defines_custom.inc.php.
  4. Éditez le fichier defines_custom.inc.php et ajoutez le contenu suivant:

    <?php
    /**
     * Avoid error PDF, force font 'freesans'.
     */
    define('PDF_FONT_NAME_MAIN', 'freesans');
  5. Enregistrez le fichier et testez la génération d'une facture en français.

Cette FAQ a été utile?

Ce guide détaille les différences entre les protocoles IMAP et POP3 sur un logiciel/client de messagerie (Outlook, Microsoft 365, Thunderbird, Apple Mail, eM Client, etc.) et explique pourquoi il est crucial de ne pas les utiliser simultanément pour une même adresse mail gérée par Infomaniak.

 

IMAP (recommandé)

L'IMAP est le protocole de synchronisation. Les messages restent sur le serveur et sont consultables partout.

  • Accès multi-appareils : vos e-mails sont synchronisĂ©s entre votre ordinateur, votre mobile et l'app Web Mail Infomaniak.
  • Travail collaboratif : idĂ©al pour les boĂ®tes partagĂ©es. Si un utilisateur dĂ©place ou supprime un message, la modification est visible par tous.
  • SĂ©curitĂ© : en cas de panne de votre ordinateur, vos messages restent sauvegardĂ©s sur le serveur.

 

POP3 (usage spécifique)

Le POP3 est un protocole de téléchargement. Les messages sont récupérés sur votre ordinateur et généralement supprimés du serveur.

  • Consultation hors-ligne : les messages sont stockĂ©s localement sur votre disque dur.
  • InconvĂ©nient majeur : une fois tĂ©lĂ©chargĂ©s, les messages ne sont plus visibles sur l'app Web Mail Infomaniak ou sur vos autres appareils.
  • Risques : si vous utilisez l'option "conserver une copie des messages sur le serveur", vous risquez des tĂ©lĂ©chargements en doublon et des erreurs de synchronisation.

 

Important : ne jamais mélanger POP et IMAP

L'utilisation simultanée de ces deux protocoles pour une même adresse provoque des conflits techniques majeurs :

  • Disparition inexpliquĂ©e de messages sur certains appareils.
  • TĂ©lĂ©chargements rĂ©pĂ©tĂ©s d'anciens messages dĂ©jĂ  lus (notamment sur Outlook).
  • Saturation inutile de l'espace de stockage.

Conseil : privilégiez l'utilisation de l'IMAP sur tous vos logiciels/clients de messagerie.

Prenez connaissance de ces autres guides pour configurer un compte en IMAP ou pour passer de POP Ă  IMAP.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide explique comment passer, dans un logiciel/client de messagerie, d'une configuration POP Ă  une configuration IMAP pour une mĂŞme boite mail. En effet, pour plein de raisons, il est fortement recommandĂ© d'utiliser le protocole IMAP au lieu de POP. 

 

Passer du protocole POP au protocole IMAP…

Si votre adresse mail est déjà configurée avec le protocole POP dans votre logiciel/client de messagerie (Mozilla Thunderbird, Microsoft Outlook, etc.), il est impossible de passer au protocole IMAP directement sur le compte. En effet les logiciels/clients de messagerie les plus courants ne permettent pas de modifier un compte existant POP3 et de le définir en IMAP à la place.

La solution est donc d'ajouter le même compte mail mais avec le protocole IMAP dans votre logiciel/client de messagerie puis de déplacer vos messages et dossiers du compte POP (de votre ordinateur) au compte IMAP (sur le serveur de messagerie).

⚠️ Attention : un compte POP3 sur votre logiciel/client de messagerie implique qu'Infomaniak ne possède la plupart du temps aucune sauvegarde. Il faut donc veiller à sauvegarder vos messages de votre côté avant toute manipulation critique.

 

… avec Microsoft Outlook

Certaines versions d'Outlook comme la 2016 empêchent l'ajout simple d'un second compte qui aurait la même dénomination (adresse mail identique).

sign

Pour contourner cela il faut ajouter le compte depuis la partie Profils:

sign

Et depuis là vous pourrez ajouter le compte supplémentaire, en IMAP:

sign
 

  1. Configurez le nouveau compte mail avec le protocole IMAP (le même compte que celui configuré en POP mais cette fois en IMAP):
    sign
  2. Déplacez un dossier après l'autre en les glissant vers la boite de réception du nouveau compte configuré en IMAP:
    sign
  3. Patientez pendant le transfert des éléments (cela peut prendre beaucoup de temps selon le volume à transférer sur le serveur) ; l'activité est indiquée en bas de la fenêtre:

    sign

Si votre compte POP gardait une copie des messages sur le serveur (option déconseillée présente dans les paramètres avancés de votre Outlook), vous risquez d'avoir des messages à double.

 

… avec Apple Mail

La suppression du compte mail configurĂ© en POP supprime les messages qu'il contient. Il est donc recommandĂ© de dĂ©sactiver le compte POP au lieu de le supprimer !

sign

Une fois le compte POP désactivé, prenez connaissance de cet autre guide pour configurer votre adresse mail dans Apple Mail, en IMAP.

Lorsque vous aurez terminé, il ne vous restera plus qu'à glisser les messages présents dans votre arborescence de compte POP vers l'arborescence du nouveau compte IMAP.


Cette FAQ a été utile?

Ce guide explique comment bénéficier de nouvelles versions de PHP, MySQL et de nombreux autres paquets en faisant migrer un Serveur Cloud sur une nouvelle infrastructure Infomaniak.

 

Préambule

  • La migration est gratuite et se dĂ©roule en 3 Ă©tapes:
    1. Infomaniak met à disposition un Serveur Cloud dernière génération ayant les mêmes caractéristiques que l'actuel, au même tarif et même durée d'engagement.
    2. Vous disposez d'un mois pour déplacer vos hébergements sur le nouveau Serveur Cloud mis à disposition (lire ci-dessous).
    3. Lorsque vos hébergements sont déplacés sur le nouveau serveur, résiliez l'ancien Serveur Cloud.
  • Les accès FTP et bases de donnĂ©es ne changent pas.
  • Seules changent au niveau des hĂ©bergements les versions supportĂ©es de PHP et MariaDB, ainsi que les adresses IPv4 et IPv6 du serveur.
  • Les noms d'hĂ´tes (hostnames) ne changent pas et sont automatiquement mis Ă  jour pour pointer sur les nouvelles adresses IP.
  • Lors de cette opĂ©ration, les statistiques sont rĂ©initialisĂ©es.

 

Procédure de migration

En migrant vos données sur la nouvelle infrastructure Cloud, vous augmentez la performance et la fiabilité de vos sites qui accéderont aux dernières technologies:

  1. Cliquez ici afin d'accĂ©der Ă  la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
  2. Cliquez directement sur le nom attribuĂ© au produit concernĂ©.
  3. Cliquez sur le bouton bleu dans l'encadré "Faire évoluer votre Serveur Cloud" (ou sur Gérer):

Cette FAQ a été utile?

Ce guide concerne le module Apache mod_auth_mysql qui permet l’authentification des utilisateurs et l’autorisation d’accès via une base de données MySQL.

 

Avec un hébergement mutualisé

Le module mod_auth_mysql n'est pas disponible avec les hĂ©bergements mutualisĂ©s ; il faut envisager un Serveur Cloud ou utiliser scripts PHP et sessions.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide explique quelles sont les différences entre les offres d'hébergement Web Infomaniak pour vous aider à choisir la meilleure solution selon vos besoins informatiques.

 

Si vous cherchez à héberger votre messagerie, prenez connaissance de cet autre guide.

 

Hébergement Web Starter

L'hébergement Web gratuit

L'hébergement Web Starter est proposé gratuitement avec chaque nom de domaine enregistré chez Infomaniak. Il propose 10 Mo d'espace disque afin de créer un site (pages basiques en langage HTML uniquement - pas de PHP, pas de base de données) même sans connaissance particulière grâce à l'outil Page de bienvenue.

 

Hébergement Web mutualisé

L'offre phare pour créer vos sites

Ces hébergements Web sont des offres mutualisées (les sites Web seront hébergés sur des serveurs dont les ressources sont partagées avec d'autres clients). Pour garantir la fiabilité de ces services mutualisés, les serveurs Infomaniak utilisent en moyenne seulement 40% de la puissance des CPU et sont équipés de disques SSD professionnels de dernière génération.

L'hébergement Web offre 250 Go d'espace disque minimum et permet de gérer plusieurs sites Web avec plusieurs noms de domaine. Cette offre inclus toutes les technologies habituellement utilisées pour créer des sites professionnels: PHP, MySQL, accès FTP et SSH, certificats SSL et installation facile de WordPress ou CMS courants, etc. Il est également possible d'y ajouter un site Node.js et/ou Site Creator.

A noter que sans hébergement d'aucune sorte, il est également possible d'obtenir puis d'exploiter Site Creator “autonome / standalone ”. Prenez connaissance de cet autre guide.

 

Serveur Cloud

L'hébergement Web professionnel

Avec un Serveur Cloud, les ressources qui vous sont allouées ne sont pas partagées avec d'autres clients et vous pouvez personnaliser la configuration matérielle et logicielle de votre serveur selon vos besoins. Un Serveur Cloud permet également d'utiliser des composants qui ne sont pas disponibles sur des hébergements Web mutualisés (Node.js, mongoDB, Sol, FFMPEG, etc.).

  • Un Serveur Cloud permet de facilement administrer votre serveur via la mĂŞme interface d'administration que les hĂ©bergements Web - vous y gĂ©rez les sites de la mĂŞme façon.
  • Un VPS permet de gĂ©rer de manière 100% autonome votre serveur avec la version de Windows ou la distribution Linux de votre choix (Debian, Ubuntu, openSUSE, ...) - de solides compĂ©tences techniques sont requises pour utiliser un VPS, y compris VPS Lite.

 

Public Cloud (et Kubernetes Service)

Solution IaaS ouverte, éprouvée et sécurisée

Pour Infomaniak c'est l'infrastructure qui propulse kDrive, Swiss Backup et le Webmail, des services utilisés par plusieurs millions d'utilisateurs. Mais Public Cloud est accessible à tout le monde et met à disposition les ressources dont vous avez besoin pour le développement de vos projets.‍

A l’aide des offres personnalisées et sur mesure vous n’aurez aucun mal à gérer votre budget de développement. Aucun frais de mise en service. Pas de montant minimum. Résiliable à tout moment. Vous ne payez que les ressources effectivement utilisées avec Public Cloud à la fin de chaque mois, idem pour Kubernetes Service.

 

Jelastic Cloud

L'hébergement Web sur mesure avec les technologies de votre choix

Jelastic Cloud permet de créer des environnements de développement sur mesure avec les technologies de votre choix (PHP, Java, Docker, Ruby, etc.). C'est une offre cloud flexible:

  • Redimensionnement horizontal et vertical des ressources.
  • Paiement selon la consommation rĂ©elle des ressources.
  • Personnalisation facile de votre infrastructure (redondance, IP, SSL, rĂ©partition de charge, etc.).

Cette FAQ a été utile?

Ce guide détaille les protocoles de transfert de fichiers acceptés sur les Hébergement Web et Serveur Cloud Infomaniak lors de connexion aux serveurs ProFTPD.

 

Préambule

  • Avec un hĂ©bergement Starter (page Web basique), seule une connexion FTP sur le port 21 (sans SSL/TLS) est possible.
  • Lors de la crĂ©ation d'un site Web via un hĂ©bergement Apache / PHP, un accès aux fichiers est possible via diffĂ©rents protocoles (FTP, SFTP, SSH).
  • Avec un site Node.js, seuls SSH / SFTP sont possibles pour accĂ©der Ă  votre environnement.

 

FTP (File Transfer Protocol)

Les connexions FTP en mode "actif" et "passif" sont supportées (alternez entre les 2 pour tenter de résoudre un éventuel problème).

Infomaniak ouvre les ports passifs de son côté [PassivePorts 42000 44000] mais uniquement pour les connexions vers son serveur FTP. Le mode FTP passif implique l'utilisation de ports distants définis par le serveur distant, ainsi que de ports locaux qui peuvent varier en fonction du logiciel/client FTP utilisé.

Le mode passif s'avère utile principalement lorsque le logiciel/client FTP est derrière un pare-feu ou un routeur NAT qui bloque les connexions FTP actives. Cependant, dans l'infrastructure Infomaniak sont autorisées les connexions FTP actives, ce qui signifie que le recours au mode passif n'est généralement pas nécessaire.

En ce qui concerne PHP, il n'est pas possible, par défaut, de gérer cette configuration de manière centralisée. Par conséquent, il n'est pas viable pour Infomaniak d'ouvrir tous les ports pour prendre en charge toutes les configurations distantes, car cela ne serait ni pratique ni sécurisé.

Dans l'ensemble, l'infrastructure ne prend pas en charge à 100% les connexions FTP sortantes en mode passif. Pour une expérience de transfert de fichiers plus fluide, il est recommandé d'utiliser le mode FTP actif ou d'explorer des technologies plus modernes telles que SFTP (lire ci-dessous).

 

SFTP (SSH File Transfer Protocol)

CrĂ©er des connexions SFTP garantit une sĂ©curitĂ© Ă©levĂ©e des transferts de fichiers. Assurez-vous d'avoir activĂ© SSH sur votre logiciel/client SFTP et utilisez le port 22 pour la connexion : sftp://*****.

 

FTPES (FTP sécurisé avec TLS/SSL)

Utilisez FTPES pour des transferts de fichiers sĂ©curisĂ©s avec le port 21 et l'encryption SSL/TLS. Avec le logiciel Filezilla par exemple, sĂ©lectionnez "Connexion FTP explicite sur TLS" pour configurer votre logiciel/client FTPES : ftpes://*****.

 

FTPaccess

L'accès à la configuration FTPaccess est disponible.

 

Ce qui n'est pas pris en charge‍

Utilisateur Public/Anonymous

Il n'est pas autorisé de se connecter en tant qu'utilisateur public ou anonyme. Vous devez disposer d'un compte d'utilisateur valide pour accéder à votre espace d'hébergement.

FTPs (FTP sécurisé sur un port personnalisé)

Le protocole FTPs n'est pas pris en charge, ce qui signifie que le port 2121 n'est pas ouvert pour ce type de connexion.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide concerne la synchronisation des serveurs via le protocole NTP (Network Time Protocol) et la configuration de la timezone sur les serveurs d'Infomaniak.

 

Synchronisation précise des serveurs via NTP

Les serveurs d'Infomaniak sont tous synchronisés via le protocole NTP. La société met à disposition ses propres serveurs NTP stratum-1 accessibles au public pour une utilisation flexible.

Pour intégrer ces serveurs dans vos paramètres, utiliser l'enregistrement suivant: pool.ntp.infomaniak.ch.

La configuration par défaut de la timezone est en UTC. Cependant, les fonctions PHP sont conçues pour prendre en compte différentes timezones en fonction des besoins spécifiques.

Pour ajuster la timezone dans vos scripts PHP, utiliser la fonction date_default_timezone_set('UTC').

 

MySQL: spĂ©cificitĂ©s temporelles

L'infrastructure Infomaniak prend en charge les fonctionnalités permettant de travailler avec des données temporelles de manière précise et efficace, en tenant compte des fuseaux horaires, ce qui est crucial pour de nombreuses applications modernes:

  • MySQL utilise une base de donnĂ©es de fuseaux horaires pour stocker et gĂ©rer les informations sur les fuseaux horaires.
  • La table mysql.time_zone contient les donnĂ©es des fuseaux horaires, y compris les informations sur les dĂ©calages de temps, les noms de fuseaux horaires, etc.
  • La fonction CONVERT_TZ est utilisĂ©e pour convertir une heure d'un fuseau horaire Ă  un autre dans MySQL avec la syntaxe suivante : CONVERT_TZ(dt, from_tz, to_tz), oĂą :
    • dt est la date/heure Ă  convertir.
    • from_tz est le fuseau horaire source.
    • to_tz est le fuseau horaire cible.
  • Exemple: CONVERT_TZ('2024-05-14 12:00:00', 'UTC', 'America/New_York') convertira le temps 12:00:00 UTC en temps local Ă  New York.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide présente des pistes d'amélioration pour réduire le temps de réponse de votre Hébergement Web Infomaniak.

 

Préambule

  • TTFB, ou *Time To First Byte*, est une unitĂ© de mesure utilisĂ©e pour Ă©valuer la vitesse de rĂ©ponse d'un serveur Web.
  • Le TTFB mesure le temps entre une requĂŞte HTTP provenant d'un utilisateur ou d'un navigateur et la rĂ©ception du premier byte de la page du site Ă  consulter.
  • Ce dĂ©lai est particulièrement important. Il peut faire partie des critères SEO pris en compte par les moteurs de recherche comme Google.

 

Pistes d'amélioration du TTFB

 Pour accĂ©lĂ©rer le site et obtenir une meilleure valeur TTFB :

  • Utilisez un rĂ©seau de diffusion de contenu (CDN).
  • Optimisez le code du site.
  • Optimisez les requĂŞtes de la base de donnĂ©es.
  • Limitez les requĂŞtes HTTP.
  • Incorporez du CSS et du JavaScript dans vos pages HTML pour ne pas faire appel Ă  des ressources externes.
  • Utilisez un système de cache RFPL (*Response First, Process Later*).

Prenez connaissance de l'article de Criticalcase (en anglais) pour de plus amples informations.

 

Tester la vitesse de rĂ©ponse du serveur 

En cas de doute sur la vitesse de réponse du serveur, il est possible de créer un fichier index2.html qui sera enregistré au même niveau que le fichier index.html (ou .php), et ainsi effectuer un test d'optimisation (par exemple domain.xyz/index2.html) sans que le site/CMS principal ne soit pris en compte.

Si le temps de réponse est normal, cela signifie que les lenteurs proviennent du site et non du serveur.

 

Pour aller plus loin 

Prenez connaissance des ressources suivantes :


Cette FAQ a été utile?

Ce guide vous aide à mettre en place l'en-tête "Access-Control-Allow-Origin", un header HTTP qui spécifie quelle origine (domaine, protocole et port) peut accéder aux ressources sur un serveur. Cet en-tête est utilisé pour contrôler l'accès en cross-origin (CORS) à partir d'une application Web.

 

Liste des domaines autorisés

Vous pouvez ajouter l'origine d'une requête à la liste des domaines autorisés à accéder aux ressources du serveur en l'ajoutant aux valeurs de l'en-tête Access-Control-Allow-Origin.

Pour autoriser par exemple le site https://domain.xyz à accéder aux ressources avec CORS, le header doit être comme suit:

Access-Control-Allow-Origin: https://domain.xyz

Vous pouvez le régler via la fonction header() de PHP en vous inspirant de ce guide notamment.

Si vous avez besoin que cet en-tête soit appliqué partout, vous pouvez passer par un auto-prepend.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide explique comment résoudre un problème d’importation d’un fichier .csv dans une table MySQL. L’alternative proposée consiste à lire le fichier CSV ligne par ligne avec PHP et à insérer les données dans la base de données MySQL.

 

Fonction "LOAD DATA LOCAL INFILE" désactivée

La fonction LOAD DATA LOCAL INFILE permet d’importer un fichier CSV directement dans une table MySQL. Cependant, cette fonctionnalité est souvent exploitée par des attaquants pour obtenir un accès non autorisé à des sites hébergés sur des serveurs qui l’acceptent.

Afin de prévenir tout risque de sécurité et de protéger les données des clients, Infomaniak a désactivé la fonction LOAD DATA LOCAL INFILE. Les utilisateurs qui importent leurs fichiers CSV via phpMyAdmin (sans cocher l’option “CSV via LOAD DATA”) ne sont pas concernés.

Voici une méthode alternative pour importer des données au format CSV dans une table MySQL. L’exemple ci-dessous montre comment gérer correctement les erreurs lors de l’ouverture du fichier CSV et de l’insertion des données dans la base de données.

Ce script utilise mysqli pour se connecter à la base et des requêtes préparées pour insérer les données. Cela garantit une meilleure sécurité, une compatibilité optimale avec les versions récentes de PHP et une intégration simple dans votre projet, que ce soit dans un script existant ou un nouveau fichier situé dans le répertoire /web :

$fileName = "data.csv";

// Connect to MySQL database using mysqli
$link = new mysqli("localhost", "username", "password", "database");

// Check database connection
if ($link->connect_error) {
   die("Connection failed: " . $link->connect_error);
}

// Open the CSV file for reading
if (($handle = fopen($fileName, "r")) !== FALSE) {

   // Read each line of the CSV file
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {

       // Prepare the SQL query dynamically
       $query = "INSERT INTO `test` VALUES (" . str_repeat('?,', count($data) - 1) . "?)";
       $stmt = $link->prepare($query);

       // Check if query preparation was successful
       if ($stmt === FALSE) {
           die("Query preparation failed: " . $link->error);
       }

       // Bind parameters (assuming all columns are strings)
       $types = str_repeat('s', count($data));
       $stmt->bind_param($types, ...$data);

       // Execute the query
       if (!$stmt->execute()) {
           die("Query execution failed: " . $stmt->error);
       }

       // Close the statement
       $stmt->close();
   }

   // Close the CSV file
   fclose($handle);

} else {
   echo "Error: unable to open the file.\n";
   exit(1);
}

// Close the database connection
$link->close();
?>

 

Obtenir de l’aide

Il est malheureusement impossible d’indiquer précisément à quel endroit du script ces lignes de code doivent être insérées.

Si cette méthode pose problème (par exemple en cas d’import simultané de plusieurs fichiers CSV sans message d’erreur), il est possible que la structure des tables ou l’indexation des champs soit en cause. Dans ce cas, contactez votre webmaster pour vérification.

Consultez également la documentation officielle PHP relative à la fonction fgetcsv().


Cette FAQ a été utile?

Ce guide présente plusieurs exemples d'utilisation de Varnish sur Serveur Cloud Infomaniak.

 

Préambule

  • Consultez ces ressources complĂ©mentaires sur le langage de configuration Varnish (VCL) pour maĂ®triser le traitement des requĂŞtes, le routage et la mise en cache :

 

Configuration de Varnish

Une fois installé, la configuration de Varnish repose sur des règles précises de mise en cache et de purge. Veillez à restreindre l'accès pour éviter que des entités non autorisées puissent vider votre cache.

Voici un exemple de fichier de configuration regroupant les cas d'usage les plus fréquents :

vcl 4.0;

# Default backend configuration
backend default {
    .host = "127.0.0.80";  # Backend IP address
    .port = "80";           # Backend port
}

# Access Control List (ACL) for purge authorization
acl purge {
    "localhost";            # Local access
    "1.2.3.4";              # Trusted home IP
    "42.42.42.0"/24;        # Trusted company range
    ! "42.42.42.7";         # Specific IP exclusion (e.g., problematic user)
}

# Handle incoming requests
sub vcl_recv {
    # Handle PURGE requests
    if (req.method == "PURGE") {
        # Check if client IP is authorized
        if (!client.ip ~ purge) {
            return (synth(405, "IP not authorized for PURGE requests."));
        }
        return (purge);
    }

    # Custom PURGEALL for image directory
    if (req.method == "PURGEALL" && req.url == "/images") {
        if (!client.ip ~ purge) {
            return (synth(405, "IP not authorized for PURGEALL requests."));
        }
        # Invalidate all image-related objects in cache
        ban("req.url ~ \.(jpg|png|gif|svg)$");
        return (synth(200, "Images purged."));
    }

    # Bypass cache for authorized requests (e.g., admin panels)
    if (req.http.Authorization) {
        return (pass);
    }
}

# Handle backend responses before caching
sub vcl_backend_response {
    # Set TTL for images to 1 day
    if (beresp.http.content-type ~ "image") {
        set beresp.ttl = 1d;
    }

    # Respect backend's "uncacheable" instruction
    if (beresp.http.uncacheable) {
        set beresp.uncacheable = true;
    }
}

 

Purge via l'interface CLI

Dès lors que vos règles sont actives, vous pouvez tester la purge de votre site (ex: "domain.xyz") en utilisant l'outil curl :

# Purge the homepage
$ curl -X PURGE https://domain.xyz/

# Expected Varnish response
<!DOCTYPE html>
<html>
<head>
    <title>200 Purged</title>
</head>
<body>
    <h1>Success 200: Purge completed</h1>
    <p>The page has been successfully purged.</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 2</p>
    <hr>
    <p>Varnish Cache Server</p>
</body>
</html>

Pour purger une URL spécifique, modifiez simplement le chemin de la requête :

# Purge a specific file
$ curl -X PURGE https://domain.xyz/some_path/some_file.html

# Expected Varnish response
<!DOCTYPE html>
<html>
<head>
    <title>200 Purged</title>
</head>
<body>
    <h1>Success 200: Purge completed</h1>
    <p>The file has been successfully purged.</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 4</p>
    <hr>
    <p>Varnish Cache Server</p>
</body>
</html>

Ou pour déclencher la purge groupée des images définie dans le VCL :

# Execute PURGEALL for images
$ curl -X PURGEALL https://domain.xyz/images

# Expected Varnish response
<!DOCTYPE html>
<html>
<head>
    <title>200 Purged images</title>
</head>
<body>
    <h1>Success 200: Images purged</h1>
    <p>All images have been successfully purged.</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 32770</p>
    <hr>
    <p>Varnish Cache Server</p>
</body>
</html>

 

Purge depuis un CMS (PHP)

La gestion du cache peut aussi se faire dynamiquement via votre backend. Dans la configuration précédente, un contrôle sur l'en-tête Uncacheable a été ajouté. Votre CMS peut envoyer cet en-tête pour forcer Varnish à ne pas stocker une réponse.

Voici comment envoyer une requĂŞte de purge programmatique en PHP :

<?php
// Initialize cURL for a specific URL
if ($curl = curl_init("http://127.0.0.1/some_url")) {
    curl_setopt_array($curl, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => "PURGE",
        CURLOPT_HTTPHEADER => [
            "Host: {$_SERVER['HTTP_HOST']}" // Match the target host
        ]
    ]);

    curl_exec($curl);
    
    // Check if the purge was successful (HTTP 200)
    if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) {
        echo "Cache purged!";
    }
    curl_close($curl);
}
?>

Cette FAQ a été utile?

Ce guide explique comment rediriger un nom de domaine directement vers un autre ou comment envoyer automatiquement les visiteurs de votre site Web vers une autre adresse de page (URL interne ou externe).

 

Préambule

  • Pour rediriger du trafic, vous devrez agir…
    • … soit sur le nom de domaine lui-mĂŞme (il doit ĂŞtre hĂ©bergĂ© par Infomaniak et ses DNS doivent ĂŞtre ceux d'Infomaniak Ă©galement),
    • … soit sur le code prĂ©sent dans vos pages (page .htaccess, page d'accueil, etc.) si vous avez un site Web.

 

Agir sur le nom de domaine

via Outil de Redirection Web

L'outil disponible sur le Manager permet d'agir de manière simple sur le nom de domaine (ou sous-domaine) afin de le rediriger vers l'adresse Internet de votre choix.

via modifications DNS ou enregistrement A

Changer les DNS du nom de domaine ou modifier ses enregistrements A/AAAA permet de diriger le trafic Web chez un autre fournisseur.

 

Agir sur le code des pages…

… via code HTML à insérer

Insérez cette ligne de code entre les balises <head> et </head> de votre page d'accueil (en principe nommée index.html):

<meta http-equiv="refresh" content="5;url=INSERT-HERE-NEW-URL">

Remplacez 5 par le temps d'attente en seconde désiré (0 pour que cela se fasse immédiatement).

Le moteur de recherche Google indique qu’il est préférable d’utiliser une redirection de type 301 côté serveur (lire plus bas). Le W3C conseille également de ne pas l’utiliser.

… via code PHP à insérer

Si la page du site possède une extension .php, insérez cet appel de fonction header tout en haut du fichier:

header("refresh: 5; url=INSERT-HERE-NEW-PAGE-URL");

… via fichier .htaccess

Pour rediriger absolument tout le trafic visant votre site (quelle que soit la page appelée) vers une autre adresse, insérez ceci dans le fichier .htacces à la racine de votre site:

RewriteEngine On
RewriteRule ^(.*)$ INSERT-HERE-NEW-URL/$1 [R=301]

Pour cibler la page qui doit être redirigée:

Redirect permanent /ancienne_page.html insérer ici adresse URL de destination

Redirectpermanent, Redirect permanent et Redirect 301 sont des commandes équivalentes.

Ci-après un autre exemple de redirection d'une sous-partie vers la page d'accueil (cette directive à l'avantage de fonctionner avec les "deep link" contrairement à une redirection permanente):

RewriteEngine on
RewriteRule "old/path/url "/" [L]

Prenez connaissance de cet autre guide Ă  ce sujet.

Lien vers cette FAQ:


Cette FAQ a été utile?

Ce guide prĂ©sente Jelastic Cloud qui est le fruit d'une Ă©troite collaboration entre Infomaniak et l'entreprise Jelastic (Virtuozzo).

 

Infomaniak

Infomaniak assure l'infrastructure, le support, et la performance, la sécurité, et la fiabilité de la solution. Son infrastructure garantit toujours la disponibilité et la fluidité des applications, répondant aux pics de trafic et réduisant automatiquement la consommation des ressources pendant les périodes creuses. Cette flexibilité optimise le rapport coûts/performances en ne comptabilisant que les ressources réellement utilisées.

Avec ce service Cloud, les ressources informatiques s'ajustent aux fluctuations de la demande tout en conservant une maîtrise budgétaire. Toutes les données sont gérées en Suisse dans les datacenters d'Infomaniak, avec un support disponible en cinq langues.

 

Jelastic

Jelastic assure la maintenance, le développement logiciel et fournit la partie logicielle du produit.

Fondée en 2011, Jelastic automatise la création, le redimensionnement, le clustering et les mises à jour de sécurité des applications traditionnelles et natives dans le Cloud. Elle prend également en charge les environnements Java, PHP, Ruby, Node.js, Python, .NET, Go, ainsi que le cluster Docker.


Cette FAQ a été utile?

Ce guide s'adresse aux développeurs souhaitant utiliser l'ORM Propel sur un hébergement où l'accès ligne de commande est restreint.

 

Préambule

  • L'ORM permet de lier les objets d'une application aux tables d'une base de donnĂ©es. On manipule les donnĂ©es via des objets PHP plutĂ´t que d'Ă©crire du SQL brut.
  • Propel est la couche d'abstraction qui gère ces interactions (relations, jointures, pagination) pour simplifier la maintenance du code.

 

Particularités & limitations

  • Propel n'est pas prĂ©installĂ© via Pear.
    • Vous devez l'installer manuellement dans votre projet.
    • Il est impĂ©ratif de tĂ©lĂ©charger la version "Conventional Package" de Propel.
  • Les commandes CLI (comme propel-gen) ne sont pas exĂ©cutables sur le serveur.
    • En consĂ©quence, Propel ne s'utilise qu'en mode "Runtime" sur la production. La gĂ©nĂ©ration des classes (build) doit ĂŞtre effectuĂ©e localement.
    • Le workflow consiste Ă  gĂ©nĂ©rer le code sur un environnement de dĂ©veloppement, puis Ă  transfĂ©rer les fichiers rĂ©sultants vers le serveur.
  • DĂ©pendances:
    • L'ensemble des librairies nĂ©cessaires Ă  Propel est disponible, Ă  l'exception de Phing.
    • L'absence de Phing n'impacte pas la production, car cet outil est uniquement requis lors de la phase de gĂ©nĂ©ration locale.

Cette FAQ a été utile?

Ce guide explique comment ajouter des adresses IP Ă  la liste blanche d'un site Web Infomaniak.

 

Préambule

  • Autoriser des IP sur xmlrpc.php permet d'accĂ©der aux URLs qui sont bloquĂ©es par dĂ©faut, car jugĂ©es Ă  risques.
  • Ce type de blocage est effectif sur tous les serveurs rĂ©cents.
  • Concernant WordPress, sa fonctionnalitĂ© XML-RPC n'est disponible par dĂ©faut que via les services Infomaniak et JetPack pour des questions de sĂ©curitĂ©.

 

Ajouter des adresses IP Ă  la liste blanche xmlrpc.php

Pour accĂ©der Ă  la gestion du site Web :

  1. Cliquez ici afin d'accĂ©der Ă  la gestion de votre site sur le Manager Infomaniak (besoin d'aide ?).
  2. Cliquez directement sur le nom attribuĂ© au site concernĂ©:
  3. Cliquez sur Gérer les paramètres avancés:
  4. Cliquez sur l'onglet PHP / Apache:
  5. Complétez la ligne concernée.
  6. Cliquez sur le bouton Enregistrer en bas de page:

Cette FAQ a été utile?

Ce guide explique comment rendre public l'un de vos calendriers / agendas depuis l'app Web Calendar Infomaniak (service en ligne ksuite.infomaniak.com/calendar).

 

Préambule

  • Vous obtiendrez une URL propre Ă  votre agenda au format .ics que Calendar (ex-iCal Apple), Calendrier (ex-iCalendar Microsoft), Thunderbird (ex-Lightning Mozilla) ou encore Google Agenda peuvent reconnaitre pour afficher votre agenda:
  • Les donnĂ©es contenues dans le calendrier partagĂ© ne seront plus privĂ©es mais ne seront disponibles qu'en lecture seule aux utilisateurs qui s'y "abonnent”.
  • La frĂ©quence des mises Ă  jour ponctuelles opĂ©rĂ©es par l'application qui souscrit Ă  l'URL de votre calendrier doit ĂŞtre dĂ©finie sur l'application en question.
  • Des scripts PHP (non fournis) permettent Ă©galement de parser de tels fichiers vous permettant par exemple l'inclusion d'Ă©vènements sur un site Web.
  • Prenez connaissance de cet autre guide pour configurer la synchronisation de vos calendriers/agendas ou de cet autre guide pour partager un calendrier/agenda Ă  vos collaborateurs avec diffĂ©rentes permissions.

 

Activer le partage public d'un calendrier Infomaniak

Pour partager un agenda publiquement :

  1. Cliquez ici afin d'accĂ©der Ă  l'app Web Calendar Infomaniak (service en ligne ksuite.infomaniak.com/calendar).
  2. Cliquez sur le menu d'action â‹® Ă  droite d'un calendrier.
  3. Cliquez sur Partager le calendrier.
  4. Activez le bouton Ă  bascule (toggle switch) pour le partage public.
  5. Cliquez sur l'icĂ´ne pour copier l'adresse dans le presse-papiers:
    • Il est en tout temps possible de supprimer l'accès public depuis cette page de partage (cf point 4 ci-dessus):

Cette FAQ a été utile?