Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Ce guide dĂ©taille les rĂšgles spĂ©cifiques Ă respecter lors de la crĂ©ation d'un mot de passe utilisateur avec mysqli_connect() qui contient le caractĂšre âdollarâ $ sur les plateformes Infomaniak.
Préambule
- Si lors de l'utilisation de
mysqli_connect(), vous obtenez le message d'erreur "Access denied for user" et que votre mot de passe d'utilisateur de base de données contient un signe$, le problÚme peut venir du fonctionnement des chaßnes de caractÚres en PHP. - Le problÚme peut également survenir avec des scripts de messagerie.
RĂšgles Ă respecter
Lorsque est utilisé le caractÚre spécial $ dans un mot de passe utilisateur et que celui-ci est suivi par tout autre caractÚre qu'un nombre, le nom de la variable n'est pas valide et la substitution ne se fait pas correctement.
Voici des solutions pour corriger cela:
- Placez le mot de passe entre guillemets simples :
'$******' - Assurez-vous qu'un nombre suit directement le dollar :
"$2*****" - Utilisez un anti-slash pour "échapper" le dollar dans le mot de passe :
â\$****â
L'extension JavaScript_Object_Notation de PHP est disponible. Elle est utile pour traiter des données JSON dans vos applications Web PHP, que ce soit pour échanger des données avec des services Web, stocker des configurations ou communiquer avec des applications frontales écrites en JavaScript.
Ce guide explique comment modifier une offre d'Hébergement Web existante afin de par exemple pouvoir y héberger des sites Web supplémentaires si le quota de sites maximum est atteint, ou obtenir une solution d'hébergement plus récente pour bénéficier des derniÚres versions de PHP & MySQL.
Modifier l'offre d'hĂ©bergement Web afin deâŠ
⊠commander des sites, de l'espace disque ou des IP supplémentaires
Pour accéder au configurateur de l'hébergement Web:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez sur le menu d'action ⟠situé à droite de l'élément concerné.
- Cliquez sur Modifier l'offre:
- Augmentez les valeurs que vous souhaitez modifier.
- Cliquez sur le bouton Suivant pour accéder au paiement des modifications apportées à l'hébergement:

⊠passer sur un serveur le plus récent
Pour obtenir une solution d'hĂ©bergement sur un serveur plus rĂ©cent et ainsi bĂ©nĂ©ficier entre autre des derniĂšres versions de PHP & MySQL, vous pouvez soitâŠ
- ⊠prendre connaissance de cet autre guide en suivant la procédure qui y est indiquée jusqu'au bout:

- ⊠prendre connaissance de cet autre guide en suivant la procédure qui y est indiquée jusqu'au point 4 puis cliquez sur le bouton pour mettre à jour:

Si aucun bandeau d'information n'est affiché, c'est que vous bénéficiez déjà d'une offre d'hébergement récente.
Ce guide explique comment donner un autre nom à un hébergement Web présent dans le Manager Infomaniak au sein de votre Organisation.
Préambule
- Un hĂ©bergement Web est, schĂ©matiquement, lâespace de stockage rĂ©servĂ© pour hĂ©berger un ou plusieurs de vos sites Internet.
- Par défaut, votre hébergement Infomaniak prend le nom du premier site que vous ajoutez à cet hébergement:
- Vous possĂ©dez le nom de domaine "domaine.xyz" et souhaitez un site avec ce nom de domaineâŠ
- Vous achetez un hĂ©bergement Web qui sera automatiquement nommĂ© "domaine.xyz" mĂȘme si vous ajoutez plus tard un second site "toto.com".
- LâhĂ©bergement peut ĂȘtre renommĂ© avec un nom plus gĂ©nĂ©rique comme "Mes Sites Web" pour mieux reflĂ©ter son contenu rĂ©el.
- Ce renommage est destiné à améliorer la lisibilité/la compréhension des produits listés dans votre Manager et n'a strictement aucune incidence sur les adresses des sites Web: prenez connaissance de cet autre guide pour agir sur le nom de domaine.
Renommer un hébergement Web
Pour accĂ©der Ă lâhĂ©bergement Web afin dâeffectuer le changement de nom :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Cliquez sur le bouton Gérer.
- Cliquez sur Modifier le nom:

- Entrez le nom souhaité.
- Cliquez sur Enregistrer.
Ce guide concerne les fonctions ODBC de PHP.
Les fonctions ODBC de PHP ne sont supportées que sur Serveur Cloud.
Fonctions Open Database Connectivity
Il s'agit des fonctions utilisées pour interagir avec des bases de données via l'interface ODBC (Open Database Connectivity), un standard pour accéder à des sources de données de maniÚre uniforme. Voici quelques exemples d'utilisation des fonctions ODBC de PHP :
- Pouvoir lire des données d'une base de données externe, et les afficher sur votre site Web
- Insérer ou modifier des données dans une base de données externe
- Effectuer des requĂȘtes complexes sur une base de donnĂ©es externe
La plateforme d'hébergement pour vos sites *.perso.ch, *.users.ch, *.geneva-link.ch évolue et ce guide présente la procédure à suivre pour vous connecter à votre espace FTP.
Modification des identifiants de connexion
La plateforme d'hébergement actuelle repose sur l'utilisation d'un préfixe au niveau de votre nom d'utilisateur FTP. Celui-ci se présente sous la forme suivante : "persoch_"
Ainsi, si votre nom d'utilisateur était infomaniak, il faudra dorénavant utiliser l'utilisateur suivant pour se connecter via FTP : persoch_infomaniak.
Ce guide explique comment travailler sans le module PECL SSH2 client indisponible sur les hĂ©bergements Web et Serveurs Cloud Infomaniak, en utilisant plutĂŽt la bibliothĂšque phpseclib, qui fonctionne en PHP natif sans nĂ©cessiter dâextension spĂ©cifique.
Préambule
- Lâutilisation de
PECL SSH2 cliententraine des erreurs de typeNo compatible key exchange algorithms foundouUnable to exchange encryption keysdans sa derniere version disponible. Phpseclibpermet :- L'authentification SSH par mot de passe ou clé privée.
- L'exécution de commandes à distance.
- Le transfert de fichiers sécurisés (SFTP).
- La gestion des clés SSH.
Utiliser phpseclib
Pour intégrer une connexion SSH dans un script PHP, utilisez phpseclib comme suit :
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('domain.xyz');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private_key'));
if (!$ssh->login('utilisateur', $key)) {
exit('Authentication Failed');
}
echo $ssh->exec('ls -la');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.
Ce guide explique comment accéder à InnoDB chez Infomaniak.
Utiliser le moteur de stockage MySQL InnoDB
DĂšs lors que votre hĂ©bergement Infomaniak vous donne accĂšs aux bases de donnĂ©es MySQL / MariaDB, InnoDB est disponible dans le mĂȘme temps (MyISAM auparavant).
InnoDB offre des fonctionnalitĂ©s avancĂ©es telles que les transactions ACID, les verrous au niveau de la ligne, les indexes de texte complet, etc. Vous pouvez tirer parti de ces fonctionnalitĂ©s en utilisant des instructions SQL appropriĂ©es dans vos requĂȘtes.
Ce guide concerne l'installation d'extension PHP sur Hébergements Web Infomaniak.
Utilisation d'extensions PHP Zend
- Zend Guard Loader est une extension PHP qui permet d'exécuter des scripts PHP chiffrés via Zend Guard.
- Zend Guard Loader est installé de base pour PHP <= 5.6 sur tous les hébergements Web et n'est pas disponible pour les versions de PHP >= 5.6.
- Depuis PHP 5.3.x, le module Zend Optimizer a été remplacé par ZendGuardLoader
- L'extension ZendOPCache nécessite un Serveur Cloud configuré avec PHP 5.5 minimum
Ce guide concerne YAZ une bibliothÚque logicielle utilisée pour implémenter le protocole Z39.50, un protocole de recherche et de récupération d'informations permettant la communication entre différents systÚmes de bibliothÚques (SIGB) comme PMB largement utilisé en France.
Infomaniak pour une gestion efficace des bibliothĂšques
Sur les Hébergements Web Infomaniak, PMB est supporté et YAZ est activé par défaut.
Toutefois si vous rencontrez des erreurs comme Call to undefined function yaz_connect() il sera nécessaire d'ouvrir des ports via le Manager. Le port 210 est le port standard utilisé pour les communications Z39.50 mais n'hésitez pas à consulter la documentation de vos applicatifs.
Pour les anciennes formules d'hébergement Infomaniak, il faut envisager un changement d'offre.
L'accĂšs aux commandes systĂšme who et users est interdit aux utilisateurs LDAP sur tous les serveurs Infomaniak.
Ce guide vous aidera si par exemple vous souhaitez déployer un package comme pymysql et que celui-ci requiert une version de python supérieure à celle proposée sur votre hébergement.
Préambule
- Anaconda est une distribution libre et open source des langages de programmation Python. Cette distribution vise à simplifier la gestion des paquets et de déploiement.
- Il est recommandé alors d'utiliser conda livré avec une version récente de python et qui s'installe dans l'espace utilisateur, de sorte qu'il n'y a pas de conflit avec le systÚme python (comme dans un environnement virtuel, qui nécessite toujours une installation systÚme de la version souhaitée).
- Prenez connaissance de la documentation officielle.
- Pour de l'aide supplĂ©mentaire contactez un partenaire ou lancez gratuitement un appel d'offres â dĂ©couvrez aussi le rĂŽle de l'hĂ©bergeur.
Télécharger l'installateur
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: âMiniconda3-py37_4.10.3-Linux-x86_64.shâMiniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s 18:21:11 (100 MB/s) - âMiniconda3-py37_4.10.3-Linux-x86_64.shâ saved [89026327/89026327]ContrĂŽler le hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OKLancer l'installation
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done## Package Plan ##environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3The following NEW packages will be INSTALLED: _libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3Preparing transaction: done
Executing transaction: done
installation finished.Lancer conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)Installer pymysql (par exemple)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|ââââââââââââââââââââââââââââââââ| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Ce guide explique comment spĂ©cifier un fichier qui sera chargĂ© avant mĂȘme la page voulue ou au dĂ©but de chaque script PHP exĂ©cutĂ© sur votre serveur, inclus comme s'il avait Ă©tĂ© appelĂ© avec la fonction require(), mais plus globalement en utilisant la directive auto_prepend_file de PHP.
Préambule
- Pour par exemple déclarer les headers d'un site Web, il est possible de faire un fichier
headers.phpqui contient des fonctions PHPheader()et qui soit prepend au dĂ©but de chaque fichier PHPâŠ- ⊠via un fichier
.user.ini(propre à un dossier), - ⊠ou via la configuration du site du Manager (global) comme expliqué ci-dessous.
- ⊠via un fichier
- Pour de l'aide supplĂ©mentaire contactez un partenaire ou lancez gratuitement un appel d'offres â dĂ©couvrez aussi le rĂŽle de l'hĂ©bergeur.
Inclure un fichier globalement depuis le Manager
Pour accéder à la gestion du site Web :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous ParamÚtres avancés:

- Cliquez sur l'onglet PHP / Apache.
- Complétez la ligne concernée en entrant le chemin du fichier à inclure.
- Cliquez sur le bouton en bas de page pour sauvegarder:

AprÚs avoir défini cette directive, toutes les pages PHP sur votre serveur incluront automatiquement le fichier spécifié avant d'exécuter leur propre code.
Les headers définis dans un fichier .htaccess ne sont valables que pour le contenu non PHP (donc statique).
Infomaniak utilise php-fpm qui reçoit les différents headers via apache fast_cgi. Dans la RFC de cgi_www le header Strict-Transport-Security ne fait pas partie des headers passés via CGI et la documentation Apache le confirme. Prenez connaissance de cette autre RFC.
Ce guide explique comment ajuster la configuration d'un site Node.js hĂ©bergĂ© sur l'infrastructure Infomaniak afin dâadapter le comportement de votre application en fonction de son Ă©volution, de ses dĂ©pendances ou de vos prĂ©fĂ©rences techniques.
Prérequis
- Installer un site Node.js sur votre hébergement.
- Tester vos modifications en local avant de les appliquer en production.
- Vérifier que vos scripts (
start,build) sont bien dĂ©finis dans votre fichierpackage.json. - Si vous modifiez la structure de votre projet, penser Ă ajuster le dossier dâexĂ©cution et les commandes associĂ©es.
- Le port dâĂ©coute dĂ©fini dans le Manager doit impĂ©rativement correspondre Ă celui utilisĂ© dans le code de lâapplication.
Accéder à la configuration
Chaque site dispose dâun tableau de bord dĂ©diĂ© pour contrĂŽler lâapplication (start, stop, restart), consulter la console dâexĂ©cution, gĂ©rer les versions de Node.js, configurer les domaines et activer les certificats SSL:
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Vous pouvez ouvrir la console, stopper le projet (une page de maintenance sera appliquée) ou le redémarrer.
- Pour accéder aux paramÚtres avancés, cliquez sur Gérer sous ParamÚtres avancés:

- Cliquez sur l'onglet Node.js pour accéder aux réglages:

Appliquer les changements
Pour cela:
- Enregistrez les modifications depuis lâinterface du Manager.
- Redémarrez votre application pour que les changements soient pris en compte.
Prenez connaissance de cet autre guide en cas de problĂšme.
Commandes principales
Dossier dâexĂ©cution
Le dossier dâexĂ©cution indique lâemplacement sur le serveur oĂč seront exĂ©cutĂ©es les commandes de construction et de lancement. Il doit pointer vers le rĂ©pertoire racine de votre application, câest-Ă -dire lĂ oĂč se trouve votre fichier package.json.
Par exemple, vous pouvez spécifier pour la racine du projet:
./ou si votre application est dans un sous-dossier nommé app:
./appou si elle se trouve dans un dossier backend:
./backendCommande de construction (facultative)
Si votre application Node.js nĂ©cessite une Ă©tape de compilation avant dâĂȘtre exĂ©cutĂ©e, renseignez une commande de construction dans le champ prĂ©vu Ă cet effet. Cette commande sera exĂ©cutĂ©e automatiquement avant le dĂ©marrage de lâapplication.
Par exemple, vous pouvez indiquerâŻ:
npm install && npm run buildou, si vous utilisez yarn :
yarn install && yarn buildSi votre projet ne nĂ©cessite aucune compilation, ce champ peut ĂȘtre laissĂ© vide.
Commande de lancement
La commande de lancement correspond Ă lâinstruction utilisĂ©e pour dĂ©marrer votre application. Elle doit ĂȘtre identique Ă celle que vous utilisez en local pour exĂ©cuter le projet.
Par exemple, vous pouvez indiquer :
node index.jsnpm startou
yarn startCette commande doit permettre de lancer directement le serveur ou le point dâentrĂ©e de votre application tel quâil est dĂ©fini dans votre environnement de dĂ©veloppement.
Port dâĂ©coute
Votre application doit Ă©couter sur un port spĂ©cifique qui est dĂ©fini dans le Manager. Ce port est transmis Ă votre application via une variable dâenvironnement PORT.
Exemple dans votre code Node.js :
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});Assurez-vous que ce port est bien pris en compte dans votre code.
Version de Node.js
Vous pouvez sĂ©lectionner la version de Node.js que votre site doit utiliser. Il est conseillĂ© dâutiliser une version stable et toujours supportĂ©e pour garantir la sĂ©curitĂ© et la compatibilitĂ© de votre application.
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.
- Simplifiez-vous la vie ! En cas de besoin, des partenaires locaux et référencés par Infomaniak peuvent s'occuper de ces démarches. Lancez un appel d'offres gratuit. Ils s'occupent de tout, vous libérant des détails techniques.
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 :
- Recommandations de Google
- Recommandations de GTmetrix
- Tester la vitesse de réponse de votre site depuis plusieurs pays
- Tester la vitesse de réponse de votre site
- Optimiser un site
ATTENTION: Cette mĂ©thode modifie les fichiers du cĆur de Magento pour dĂ©sactiver la vĂ©rification des privilĂšges avancĂ©s (triggers, routines), ce qui est une pratique risquĂ©e en termes de sĂ©curitĂ©, de stabilitĂ© et complique les futures mises Ă jour.
Aujourd'hui, Magento (désormais Adobe Commerce ou Magento Open Source) est une plateforme moderne qui exige un environnement serveur respectant ses prérequis stricts. La version stable actuelle est souvent la 2.4.8 ou une version de correctif plus récente. Ces versions nécessitent impérativement des technologies à jour comme PHP 8.2/8.3, MySQL 8.0/MariaDB 10.6 et un moteur de recherche dédié comme Elasticsearch ou OpenSearch.
Pour toute nouvelle installation ou migration, il est fortement recommandé d'utiliser la derniÚre version stable sans aucune modification manuelle du code source. Vous devez choisir un type d'hébergement performant (Serveur Cloud ou VPS/Dédié) qui garantit l'accÚs à tous les privilÚges systÚme requis pour un fonctionnement sécurisé et stable.
Ăvitez absolument d'utiliser cet ancien patch ci-dessous. A noter que ce patch est inutile en cas d'installation sur un Serveur Cloud.
Ce guide explique comment patcher l'installation de Magento afin que celle-ci puisse ĂȘtre rĂ©alisĂ©e sur un hĂ©bergement mutualisĂ© Infomaniak, mĂȘme sans les privilĂšges de type triggers & routines.
Résoudre les problÚmes d'installation de Magento 2
Editez le fichier DbValidator.php:
--- setup/src/Magento/Setup/Validator/DbValidator.php.orig 2019-04-11 17:01:45.154767893 +0200
+++ setup/src/Magento/Setup/Validator/DbValidator.php 2019-04-13 21:37:02.560386985 +0200
@@ -150,12 +150,8 @@
'ALTER',
'CREATE TEMPORARY TABLES',
'LOCK TABLES',
- 'EXECUTE',
'CREATE VIEW',
- 'SHOW VIEW',
- 'CREATE ROUTINE',
- 'ALTER ROUTINE',
- 'TRIGGER'
+ 'SHOW VIEW'
];
// check global privilegesEn cas d'erreur SOAP/PHPfpm
Selon la version de Magento utilisée, la fonction soap ne fonctionne pas correctement et peut renvoyer le message d'erreur suivant: «Uncaught SoapFault exception: [Client] looks like we got no XML document».
Le problĂšme ne vient pas d'une mauvaise configuration du serveur, mais plutĂŽt d'un mauvais design de Magento qui ne prend pas en compte le cas d'exĂ©cution de PHP en environnement FPM. Ainsi, les requĂȘtes SOAP gĂ©nĂ©rĂ©es par Magento comportent des doubles headers (non conforme Ă la spĂ©cification SOAP) et gĂ©nĂšrent une erreur.
Prenez connaissance de cette solution (non développée par Infomaniak).
Ce guide explique comment augmenter la valeur max_children sur Serveur Cloud afin d'augmenter le nombre de processus PHP simultanĂ©s qui peuvent ĂȘtre utilisĂ©s par votre site. Cela sera trĂšs utile pour rĂ©soudre des problĂšmes de chargement infini des pages de votre site.
Préambule
- Par défaut sur tout hébergement, la limite de
max_childrenest fixée à 20.- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
max_childrenest automatiquement ajustée en fonction de la configuration de votre Serveur Cloud. - Pour augmenter cette limite sur hébergement mutualisé, migrez sur Serveur Cloud.
- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
- Pour comprendre comment calculer au plus juste les
max_childrennécessaires, prenez connaissance de cet article à ce sujet.
Augmenter la valeur max_children
Prérequis
- S'assurer que vous disposez des ressources nécessaires sur le serveur Cloud.
- S'assurer que l'ensemble des ressources du serveur Cloud ne soient pas utilisées ; s'il s'avÚre que celles-ci sont totalement utilisées, l'augmentation de la valeur
max_childrenn'aura aucun effet (Modifier les ressources du Serveur Cloud). - ContrĂŽler le monitoring des ressources de votre serveur, dans le cas oĂč les ressources de votre serveur sont atteintes, il sera nĂ©cessaire de vĂ©rifier l'optimisation des processus et de votre site avant d'envisager d'augmenter la valeur
max_children. - Consulter les rapports d'erreur PHP depuis le dossier
/ik-logs(master process php logs - nom du fichier : php-fpm.log) pour vérifier si la limite "max_children" a été dépassée... exemple d'erreur:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Pour accéder à la gestion des paramÚtres PHP / Apache du site dont il faut augmenter la valeur max_children sur Serveur Cloud, prenez connaissance de cet autre guide.
Vous pourrez notammentâŠ
- ⊠choisir une nouvelle valeur de
max_children:
N'oubliez pas d'enregistrer les changements en bas de page.
Limites en fonction du serveur
Limite des max_children en fonction des ressources du Serveur Cloud:
| Configuration Serveur Cloud | max_children |
|---|---|
| 2 CPU / 6 Go RAM | 20 |
| 4 CPU / 12 Go RAM | 40 |
| 6 CPU / 18 Go RAM | 60 |
| 8 CPU / 24 Go RAM | 80 |
| 12 CPU / 36 Go RAM | 120 |
| 16 CPU / 48 Go RAM | 160 |
| 24 CPU / 72 Go RAM | 240 |
| 32 CPU / 96 ou 128 Go RAM | 320 |
Ce guide explique comment modifier la valeur de la directive php_value include_path.
Modifier le include_path
Comme tout autre paramÚtre PHP, include_path est défini dans le fichier .user.ini.
Voici un exemple de chemin Ă utiliser dans le fichier .user.ini:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/includePrenez connaissance de cet autre guide au sujet du phpinfo afin de vérifier la prise en compte de votre nouvelle directive.
Le module Apache mod_userdir n'est pas disponible.