Wissensdatenbank
1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Diese Anleitung beschreibt die spezifischen Regeln, die beim Erstellen eines Benutzerpassworts mit mysqli_connect(), das das Zeichen „Dollar“ $ enthält, auf den Infomaniak-Plattformen zu beachten sind.
Vorbemerkung
- Wenn Sie bei der Verwendung von
mysqli_connect()die Fehlermeldung "Access denied for user" erhalten und Ihr Datenbankbenutzerpasswort ein Dollarzeichen$enthält, kann das Problem aus der Funktion von Zeichenketten in PHP resultieren. - Das Problem kann auch mit Messaging-Skripten auftreten.
Richtlinien einzuhalten
Wenn das Sonderzeichen $ in einem Benutzerpasswort verwendet wird und diesem kein Zahlzeichen folgt, ist der Variablenname ungültig und die Ersetzung erfolgt nicht korrekt.
Hier sind Lösungen, um dies zu beheben:
- Setzen Sie das Passwort in einfache Anführungszeichen:
'$******' - Stellen Sie sicher, dass direkt auf den Dollar eine Zahl folgt:
"$2*****" - Verwenden Sie einen Backslash, um das Dollarzeichen im Passwort zu "escapen":
“\$****”
Dieser Leitfaden bezieht sich auf das Apache-Modul mod_auth_mysql, das die Authentifizierung von Benutzern und die Zugriffsberechtigung über eine MySQL-Datenbank ermöglicht.
Bei einem Shared Hosting
Das Modul mod_auth_mysql ist nicht verfügbar bei den Shared-Hosting-Angeboten; es muss ein Serveur Cloud in Betracht gezogen werden oder PHP-Skripte und Sessions verwendet werden.
Diese Anleitung erklärt, wie man bei Infomaniak auf InnoDB zugreift.
Den MySQL-Speichermotor InnoDB verwenden
Sobald Ihr Infomaniak-Hosting Ihnen Zugriff auf MySQL-/MariaDB-Datenbanken gewährt, ist InnoDB gleichzeitig verfügbar (früher MyISAM).
InnoDB bietet erweiterte Funktionen wie ACID-Transaktionen, Zeilenebene-Sperren, Volltextindizes usw. Sie können diese Funktionen nutzen, indem Sie geeignete SQL-Anweisungen in Ihren Abfragen verwenden.
Diese Anleitung betrifft die Installation von PHP-Erweiterungen auf Webhosting von Infomaniak.
Verwendung von PHP-Erweiterungen Zend
- Zend Guard Loader ist eine PHP-Erweiterung, die das Ausführen von PHP-Skripten ermöglicht, die mit Zend Guard verschlüsselt wurden.
- Zend Guard Loader ist standardmäßig für PHP <= 5.6 auf allen Webhostings installiert und ist nicht für PHP-Versionen >= 5.6 verfügbar.
- Seit PHP 5.3.x wurde das Modul Zend Optimizer durch ZendGuardLoader ersetzt
- Die Erweiterung ZendOPCache erfordert einen Cloud-Server, der mit PHP 5.5 konfiguriert ist
Dieser Leitfaden betrifft YAZ, eine Softwarebibliothek, die zur Implementierung des Z39.50-Protokolls verwendet wird, ein Informationssuch- und -abrufprotokoll, das die Kommunikation zwischen verschiedenen Bibliotheksmanagementsystemen (BMS) wie PMB ermöglicht, das in Frankreich weit verbreitet ist.
Infomaniak für ein effektives Bibliotheksmanagement
Auf den Webhostings von Infomaniak wird PMB unterstützt und YAZ standardmäßig aktiviert.
Sollten Sie jedoch Fehler wie Call to undefined function yaz_connect() erhalten, müssen Sie Ports über den Manager öffnen. Der Port 210 ist der Standardport, der für die Z39.50-Kommunikation verwendet wird, zögern Sie jedoch nicht, die Dokumentation Ihrer Anwendungen zu konsultieren.
Für die alten Infomaniak-Hosting-Tarife sollte ein Angebotswechsel in Betracht gezogen werden.
Der Zugriff auf die Systembefehle who und users ist für LDAP-Benutzer auf allen Infomaniak-Servern verboten.
Dieser Leitfaden hilft Ihnen, wenn Sie beispielsweise ein Paket wie pymysql bereitstellen möchten und dieses eine Python-Version benötigt, die höher ist als die auf Ihrem Hosting angebotene.
Vorwort
- Anaconda ist eine kostenlose und Open-Source-Distribution der Programmiersprache Python. Diese Distribution zielt darauf ab, die Verwaltung von Paketen und die Bereitstellung zu vereinfachen.
- Es wird empfohlen, conda zu verwenden, das mit einer aktuellen Version von Python geliefert wird und im Benutzerbereich installiert wird, sodass es keine Konflikte mit dem System-Python gibt (wie in einer virtuellen Umgebung, die immer eine Systeminstallation der gewünschten Version erfordert).
- Nehmen Sie die offizielle Dokumentation zur Kenntnis.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie eine kostenlose Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosting-Anbieters.
Installationsprogramm herunterladen
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]Hash überprüfen
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OKInstallation starten
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.Conda starten
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)pymysql installieren (z.B.)
(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
Diese Anleitung erklärt, wie Sie eine Datei angeben, die vor der gewünschten Seite oder zu Beginn jedes auf Ihrem Server ausgeführten PHP-Skripts geladen wird, als ob sie mit der Funktion require() aufgerufen worden wäre, jedoch globaler mit der PHP-Direktive auto_prepend_file.
Vorwort
- Um beispielsweise die Header einer Website zu deklarieren, können Sie eine Datei
headers.phperstellen, die PHP-Funktionenheader()enthält und die am Anfang jeder PHP-Datei prepend wird…- … über eine Datei
.user.ini(ordnerspezifisch), - … oder über die Konfiguration der Website im Manager (global), wie unten beschrieben.
- … über eine Datei
Eine Datei global vom Manager aus einbinden
Um auf die Verwaltung der Website zuzugreifen:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts:
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:

- Klicken Sie auf die Registerkarte PHP / Apache.
- Vervollständigen Sie die betreffende Zeile, indem Sie den Pfad der einzubindenden Datei eingeben.
- Klicken Sie auf die Schaltfläche zum Speichern:

Nachdem Sie diese Direktive definiert haben, werden alle PHP-Seiten auf Ihrem Server automatisch die angegebene Datei einbinden, bevor sie ihren eigenen Code ausführen.
Die in einer Datei .htaccess definierten Header gelten nur für nicht-PHP-Inhalte (also statische).
Infomaniak verwendet php-fpm, das die verschiedenen Header über apache fast_cgi erhält. In der RFC von cgi_www ist der Header Strict-Transport-Security nicht Teil der über CGI übermittelten Header, und die Apache-Dokumentation bestätigt dies. Nehmen Sie Kenntnis von dieser anderen RFC.
⚠️ Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie kostenlos eine Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosters.
Dieser Leitfaden erklärt, wie Sie die Konfiguration einer Node.js-Website anpassen, die auf der Infomaniak-Infrastruktur gehostet wird, um das Verhalten Ihrer Anwendung entsprechend ihrer Entwicklung, ihrer Abhängigkeiten oder Ihrer technischen Präferenzen anzupassen.
Voraussetzungen
- Installieren Sie eine Node.js-Website auf Ihrem Hosting.
- Testen Sie Ihre Änderungen lokal, bevor Sie sie in der Produktion anwenden.
- Stellen Sie sicher, dass Ihre Skripte (
start,build) in Ihrer Dateipackage.jsondefiniert sind. - Wenn Sie die Struktur Ihres Projekts ändern, denken Sie daran, den Ausführungsordner und die zugehörigen Befehle anzupassen.
- Der im Manager definierte Listening-Port muss unbedingt mit dem in Ihrem Anwendungscode verwendeten übereinstimmen.
Auf die Konfiguration zugreifen
Jede Website verfügt über ein eigenes Dashboard, um die Anwendung zu steuern (start, stop, neustarten), die Ausführungsconsole zu konsultieren, die Node.js-Versionen zu verwalten, die Domänen zu konfigurieren und die SSL-Zertifikate zu aktivieren:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak-Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts.
- Sie können die Konsole öffnen, das Projekt stoppen (es wird eine Wartungsseite angewendet) oder es neu starten.
- Um auf die erweiterten Einstellungen zuzugreifen, klicken Sie auf Verwalten unter Erweiterte Einstellungen:

- Klicken Sie auf die Registerkarte Node.js, um auf die Einstellungen zuzugreifen:

Änderungen anwenden
Dazu:
- Speichern Sie die Änderungen über die Manager-Oberfläche.
- Starten Sie Ihre Anwendung neu, damit die Änderungen übernommen werden.
Nehmen Sie sich diesen anderen Leitfaden im Falle von Problemen zur Kenntnis.
Hauptbefehle
Ausführungsverzeichnis
Das Ausführungsverzeichnis gibt den Speicherort auf dem Server an, an dem die Build- und Startbefehle ausgeführt werden. Es muss auf das Stammverzeichnis Ihrer Anwendung zeigen, d.h. dort, wo sich Ihre Datei package.json befindet.
Zum Beispiel können Sie für die Projektwurzel angeben:
./oder wenn sich Ihre Anwendung in einem Unterverzeichnis namens app befindet:
./appoder wenn sie sich in einem Verzeichnis backend befindet:
./backendBuild-Befehl (optional)
Wenn Ihre Node.js-Anwendung einen Kompilierungsschritt vor der Ausführung benötigt, geben Sie einen Build-Befehl in das dafür vorgesehene Feld ein. Dieser Befehl wird automatisch vor dem Start der Anwendung ausgeführt.
Zum Beispiel können Sie angeben:
npm install && npm run buildoder, wenn Sie yarn :
yarn install && yarn buildverwenden, wenn Ihr Projekt keine Kompilierung benötigt, kann dieses Feld leer gelassen werden.
Start-Befehl
Der Start-Befehl entspricht dem Befehl, der zum Starten Ihrer Anwendung verwendet wird. Er muss identisch mit dem sein, den Sie lokal verwenden, um das Projekt auszuführen.
Zum Beispiel können Sie angeben:
node index.jsnpm startoder
yarn startDieser Befehl muss es ermöglichen, den Server oder den Einstiegspunkt Ihrer Anwendung direkt zu starten, wie er in Ihrer Entwicklungsumgebung definiert ist.
Listening Port
Ihre Anwendung muss auf einem bestimmten Port “hören”, der im Manager definiert ist. Dieser Port wird Ihrer Anwendung über eine Umgebungsvariable PORT übermittelt.
Beispiel in Ihrem Node.js-Code:
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Anwendung gestartet auf Port ${port}`);
});Stellen Sie sicher, dass dieser Port in Ihrem Code berücksichtigt wird.
Node.js-Version
Sie können die Node.js-Version auswählen, die Ihre Website verwenden soll. Es wird empfohlen, eine stabile und stets unterstützte Version zu verwenden, um die Sicherheit und Kompatibilität Ihrer Anwendung zu gewährleisten.
ACHTUNG: Diese Methode ändert die Kerndateien von Magento, um die Überprüfung der erweiterten Berechtigungen (triggers, routines) zu deaktivieren, was eine riskante Praxis in Bezug auf Sicherheit und Stabilität ist und zukünftige Updates erschwert.
Heute ist Magento (nun Adobe Commerce oder Magento Open Source) eine moderne Plattform, die eine Serverumgebung erfordert, die ihren strengen Voraussetzungen entspricht. Die aktuelle stabile Version ist oft die 2.4.8 oder eine neuere Patch-Version. Diese Versionen erfordern zwingend aktuelle Technologien wie PHP 8.2/8.3, MySQL 8.0/MariaDB 10.6 und eine dedizierte Suchmaschine wie Elasticsearch oder OpenSearch.
Für jede neue Installation oder Migration wird dringend empfohlen, die neueste stabile Version ohne jegliche manuelle Änderung des Quellcodes zu verwenden. Sie müssen einen leistungsfähigen Hosting-Typ (Cloud-Server oder VPS/Dediziert) wählen, der den Zugriff auf alle erforderlichen Systemberechtigungen für einen sicheren und stabilen Betrieb garantiert.
Vermeiden Sie unbedingt die Verwendung des folgenden alten Patches. Beachten Sie, dass dieser Patch bei einer Installation auf einem Cloud-Server unnötig ist.
Dieser Leitfaden erklärt, wie Sie die Magento-Installation patchen können, damit diese auf einem gemeinsamen Hosting von Infomaniak durchgeführt werden kann, selbst ohne Berechtigungen vom Typ triggers & routines.
Behebung von Magento 2 Installationsproblemen
Bearbeiten Sie die Datei 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 privilegesBei SOAP/PHPfpm-Fehlern
Je nach verwendeter Magento-Version funktioniert die Funktion soap nicht korrekt und kann die folgende Fehlermeldung zurückgeben: «Uncaught SoapFault exception: [Client] looks like we got no XML document».
Das Problem liegt nicht an einer falschen Serverkonfiguration, sondern an einem schlechten Design von Magento, das den Fall der Ausführung von PHP in einer FPM-Umgebung nicht berücksichtigt. Daher enthalten die von Magento generierten SOAP-Anfragen doppelte Header (nicht konform mit der SOAP-Spezifikation) und verursachen einen Fehler.
Nehmen Sie Kenntnis von dieser Lösung (nicht von Infomaniak entwickelt).
Dieser Leitfaden erklärt, wie Sie den Wert max_children auf einem Cloud-Server erhöhen, um die Anzahl der gleichzeitig verwendbaren PHP-Prozesse für Ihre Website zu erhöhen. Dies ist sehr nützlich, um Probleme mit dem endlosen Laden von Seiten Ihrer Website zu beheben.
Vorwort
- Standardmäßig ist die Grenze von
max_childrenauf allen Hostings auf 20 festgelegt.- Obwohl es möglich ist, diesen Wert über den Infomaniak-Manager zu erhöhen, wird die Grenze von
max_childrenautomatisch an die Konfiguration Ihres Cloud-Servers angepasst. - Um diese Grenze auf einem Shared Hosting zu erhöhen, migrieren Sie zu einem Cloud-Server.
- Obwohl es möglich ist, diesen Wert über den Infomaniak-Manager zu erhöhen, wird die Grenze von
- Um zu verstehen, wie Sie die benötigten
max_childrengenau berechnen, lesen Sie diesen Artikel zu diesem Thema.
Erhöhung des Wertes max_children
Voraussetzungen
- Stellen Sie sicher, dass Sie über die notwendigen Ressourcen auf dem Cloud-Server verfügen.
- Stellen Sie sicher, dass nicht alle Ressourcen des Cloud-Servers genutzt werden; wenn diese vollständig genutzt werden, hat die Erhöhung des Wertes
max_childrenkeine Wirkung (Ressourcen des Cloud-Servers ändern). - Überwachen Sie die Ressourcen Ihres Servers, falls die Ressourcen Ihres Servers ausgeschöpft sind, müssen Sie die Optimierung der Prozesse und Ihrer Website überprüfen, bevor Sie den Wert
max_childrenerhöhen. - Überprüfen Sie die PHP-Fehlerberichte im Ordner
/ik-logs(Master-Prozess-PHP-Protokolle - Dateiname: php-fpm.log), um zu überprüfen, ob die Grenze "max_children" überschritten wurde... Beispiel für einen Fehler:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Um auf die Verwaltung der PHP/Apache-Parameter der Website zuzugreifen, für die der Wert max_children auf einem Cloud-Server erhöht werden soll, lesen Sie diesen anderen Leitfaden.
Sie können insbesondere...
- … einen neuen Wert für
max_childrenauswählen:
Vergessen Sie nicht, die Änderungen am Ende der Seite zu speichern.
Grenzen je nach Server
Grenzen der max_children je nach Ressourcen des Cloud-Servers:
| Konfiguration Cloud-Server | max_children |
|---|---|
| 2 CPU / 6 GB RAM | 20 |
| 4 CPU / 12 GB RAM | 40 |
| 6 CPU / 18 GB RAM | 60 |
| 8 CPU / 24 GB RAM | 80 |
| 12 CPU / 36 GB RAM | 120 |
| 16 CPU / 48 GB RAM | 160 |
| 24 CPU / 72 GB RAM | 240 |
| 32 CPU / 96 oder 128 GB RAM | 320 |
Diese Anleitung erklärt, wie Sie den Wert der Direktive php_value include_path ändern.
include_path ändern
Wie jeder andere PHP-Parameter wird include_path in der Datei .user.ini festgelegt.
Hier ist ein Beispiel für einen Pfad, der in der Datei .user.ini verwendet werden kann:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/includeNehmen Sie diese Anleitung zur Kenntnis, um zu überprüfen, ob Ihre neue Direktive berücksichtigt wird.
Das Apache-Modul mod_userdir ist nicht verfügbar.
Diese Anleitung richtet sich an Sie, weil Sie sich für Infomaniak als Hosting-Anbieter entschieden haben (oder dies tun werden). Diese Entscheidung ist nicht ohne Bedeutung. Sie sind umweltbewusst und möchten so viel wie möglich tun, um den CO2-Fußabdruck im Internet zu reduzieren.
Infomaniak bedankt sich bereits jetzt dafür, dass Sie diesen Hoster, der sich um den Planeten kümmert gewählt haben und die untenstehenden Möglichkeiten erkunden, um in der ökologischen Gestaltung Ihrer Webumgebung voranzukommen.
Warum handeln?
Websites consume energy to function, and the use of the Internet is one of the main causes of the increase in greenhouse gas emissions.
Neben der Wahl eines ethischen Hosting-Anbieters, der erneuerbare Energiequellen für seine Server nutzt, können Sie auch dazu beitragen, diese Emissionen zu verringern, indem Sie umweltfreundliche Praktiken bei der Gestaltung und Verwaltung Ihrer Websites und Mail-Dienste anwenden.
Wie kann man handeln?
Wie oben erwähnt, handelt Infomaniak auf verschiedenen Ebenen, einschließlich des Support-Teams: Es wird Sie bei der Auswahl von Dienstleistungen unterstützen, die Ihren Bedürfnissen entsprechen und gleichzeitig die Umwelt schützen. Es sammelt Ihr Feedback, um unsere Praktiken zu optimieren und sich von Ihren Erfahrungen inspirieren zu lassen, und kommuniziert die Umweltfragen im Bereich Hosting, um gute digitale Praktiken zu fördern.
Auf Ihrer Ebene gibt es mehrere Möglichkeiten, Ihren CO2-Fußabdruck im Internet zu reduzieren:
Den Energieverbrauch minimieren
Um den Energieverbrauch der Server und der Benutzercomputer zu reduzieren: Optimieren Sie Bilder, verwenden Sie Web-Schriftarten, verwenden Sie minimierte Skripte und Datendekompressionstechnologien. Einfache Designs können helfen, den Bandbreitenbedarf zu reduzieren.
Bieten Sie Optionen an, um den Datenverbrauch zu reduzieren, indem Sie Bilder mit niedrigerer Qualität verwenden oder Videos in verschiedenen Qualitäten zum Streaming anbieten, um Tracker und Werbung zu deaktivieren, die viel Daten verbrauchen.
Für gute Praktiken, die sich an WordPress richten, besuchen Sie die GreenIT-Karten.
Nachhaltige Technologien nutzen
Nachhaltige Technologien wie HTML5, CSS3 und JavaScript sind umweltfreundlicher.
Nachhaltigkeit fördern
Sensibilisieren Sie die Benutzer für die Umweltauswirkungen der Internet-Technologien und laden Sie sie ein, umweltverantwortliche Praktiken zu übernehmen. Inklusive der Lösung WordPress.
Und was ist mit der E-Mail-Kommunikation?
Die gleichen Reflexe können bei Ihrer E-Mail-Kommunikation angewendet werden:
- Verwenden Sie eine umweltfreundliche Signatur, die die Empfänger dazu einlädt, ihren ökologischen Fußabdruck zu verringern, indem sie umweltfreundliche Technologien nutzen oder umweltfreundliche Praktiken anwenden…
- Verwenden Sie umweltfreundliche E-Mail-Management-Tools, die erneuerbare Energiequellen nutzen und umweltfreundliche Richtlinien zur Energieverbrauch haben…
- Verwenden Sie E-Mails im Klartextformat anstelle von HTML-E-Mails, da HTML-E-Mails in der Regel mehr Energie zum Anzeigen verbrauchen…
- Anlagen im PDF-Format anstatt schwererer Formate verwenden…
- Abmeldemöglichkeiten nutzen, um unerwünschte E-Mails zu vermeiden…
- Verwenden Sie Tracking-Tools, um herauszufinden, wie viele Personen Ihre E-Mails öffnen und um zu wissen, ob Sie zu viele oder zu wenige senden…
All diese Maßnahmen können schrittweise umgesetzt und an die jeweilige Website angepasst werden. Es gibt keine einzige Lösung.
Überwachen Sie regelmäßig die Energieverbrauchsstatistiken, um die ökologische Leistung der Website kontinuierlich zu verbessern. Infomaniak wird in Zukunft Tools in dieser Richtung anbieten, aber bis dahin können Sie https://greenframe.io verwenden.
Das Schreiben in die Verzeichnisse /etc und /lib ist aus Sicherheitsgründen deaktiviert.
Dieser Leitfaden begleitet Sie bei der Installation von Ghost auf Infomaniak, einer idealen Plattform für Blogs (regelmäßiges Schreiben, redaktionelles Format) und Content-fokussierte Publikationswebsites wie Substack oder Medium.
Basierend auf Node.js und unter Verwendung von Markdown für das Schreiben, zeichnet sich Ghost durch seine Leichtigkeit aus, während WordPress, obwohl flexibler und universeller, schwerer ist.
Für zusätzliche Hilfe kontaktieren Sie einen Partner oder starten Sie eine kostenlose Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosting-Anbieters.
Voraussetzungen
- Installieren Sie eine leere Node.js-Website auf einem Infomaniak-Webhosting.
- Erstellen Sie einen SSH-Zugang.
- Erstellen Sie eine Datenbank.
- Besitzen Sie eine gültige und funktionierende E-Mail-Adresse (insbesondere die Funktionen für vergessenes Passwort).
- Stoppen Sie Ihre Node.JS-Anwendung, bevor Sie die folgenden Schritte ausführen!
Installation von Ghost
Dafür:
- Melden Sie sich per SSH auf dem Server an (Hilfe benötigt?).
Klonen und Ausführen des Installationsskripts (führen Sie diese Befehle nacheinander aus):
git clone https://github.com/Infomaniak/hosting-tools.git cd hosting-tools/h3-ghost bash ./install.sh
Das Skript wird nun:
- Ihnen einige Fragen stellen (wie die URL Ihrer Website, die Datenbankinformationen usw.)…
- Ghost automatisch herunterladen und konfigurieren…
- Einige Minuten in Anspruch nehmen — seien Sie geduldig!
Beantworten Sie die Fragen sorgfältig unter Verwendung der Datenbankdetails, die Sie zuvor notiert haben. Schließen Sie das Terminal nicht, bevor es fertig ist!
Konfigurieren Sie Ihr Hosting (über das Infomaniak-Panel)
Sobald das Skript abgeschlossen ist, gehen Sie zu Ihrem Infomaniak-Kontrollpanel:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Produktnamen des betreffenden Produkts.
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:

- Klicken Sie auf die Registerkarte Node.js, um auf die Einstellungen zuzugreifen.
Geben Sie im Feld Ausführungsbefehl ein:
/srv/customer/node_modules/ghost-cli/bin/ghost run- Stellen Sie sicher, dass die Portnummer
3000ist. - Befehlskasten für build : Deaktivieren Sie diesen.
- Klicken Sie auf die Schaltfläche Speichern unten auf der Seite:

- Auf der Hauptseite klicken Sie auf die Schaltfläche Start (oder Neustart, wenn bereits ausgeführt).
- Beobachten Sie die Protokolle, die die Erstellung der Datenbank und den Start der Anwendung anzeigen:

Fertig! Greifen Sie auf Ihren Ghost-Blog zu
Gehen Sie dann zur URL Ihrer Website, um zu beginnen:
- Öffnen Sie Ihren Browser und gehen Sie zu
https://votresite.com/ghost(ersetzen Sievotresite.comdurch Ihre aktuelle Domain). - Beim ersten Mal:
- Sie erstellen ein Administratorkonto (Ihre Anmeldedaten für den Blog)…
- Anschließend können Sie mit dem Schreiben von Artikeln beginnen!
Benutzer-/E-Mail-Konfiguration
Um den ersten Benutzer zu erstellen, fügen Sie /ghost zur URL Ihrer Website hinzu (z. B. https://ghost.domain.xyz/ghost) und folgen Sie dem Assistenten.
Sie können auch die "Support-Adresse des Mitgliederportals" konfigurieren: Wenn neue Mitglieder sich anmelden möchten, sendet das Portal die Bestätigung des Double-Opt-In von einer bestimmten Adresse. Standardmäßig handelt es sich dabei um die "noreply"-Adresse Ihres Domänennamens. Um sie zu aktualisieren, navigieren Sie zu "Einstellungen", "Mitgliedschaft", "Portal-Einstellungen", "Anpassen" und "Konto-Seite":
Beheben einer technischen Unverträglichkeit zwischen Ghost und MariaDB
Es gibt ein Kompatibilitätsproblem zwischen Ghost und der MariaDB-Datenbank. Dies führt zu folgender Art von Fehler:
[2025-01-01 12:54:28] ERROR "GET /ghost/api/admin/posts/6834625e35802b06f1496305/?formats=mobiledoc%2Clexical&include=tags%2Cauthors%2Cauthors.roles%2Cemail%2Ctiers%2Cnewsletter%2Ccount.conversions%2Ccount.clicks%2Csentiment%2Ccount.positive_feedback%2Ccount.negative_feedback" 400 27ms
Could not understand request.
Error ID:
8f2b0d90-3a30-11f0-a25f-fd9c83e1cf02
Error Code:
ER_BAD_FIELD_ERROR
----------------------------------------
Error: select `posts`.*, (with `k` as (select `member_id` from `members_subscription_created_events` where posts.id = members_subscription_created_events.attribution_id union select `member_id` from `members_created_events` where posts.id = members_created_events.attribution_id) select count(*) from `k`) as `count__conversions`, `posts`.*, (select count(distinct `members_click_events`.`member_id`) from `members_click_events` inner join `redirects` on `members_click_events`.`redirect_id` = `redirects`.`id` where posts.id = redirects.post_id) as `count__clicks`, `posts`.*, (select COALESCE(ROUND(AVG(score) * 100), 0) from `members_feedback` where posts.id = members_feedback.post_id) as `count__sentiment`, `posts`.*, (select count(*) from `members_feedback` where posts.id = members_feedback.post_id AND members_feedback.score = 0) as `count__negative_feedback`, `posts`.*, (select sum(`score`) from `members_feedback` where posts.id = members_feedback.post_id) as `count__positive_feedback` from `posts` where (`posts`.`type` = 'post' and `posts`.`status` in ('draft', 'published', 'scheduled', 'sent')) and `posts`.`id` = '2834125e33802b06e1433305' limit 1 - Unknown column 'posts.id' in 'where clause'
at Child.<anonymous> (/srv/customer/sites/ghost.domain.xyz/versions/5.120.2/core/server/models/base/plugins/crud.js:194:31)
at Packet.asError (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packets/packet.js:740:17)
at Query.execute (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:475:34)
at PacketParser.onPacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:93:12)
at PacketParser.executeStart (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:100:25)
at Socket.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:561:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
at Readable.push (node:internal/streams/readable:392:5)
at TCP.onStreamRead (node:internal/stream_base_commons:189:23)Einige von Ghost generierte SQL-Abfragen, die gemeinsame Tabellenausdrücke (CTE) verwenden, die in skalare Unterabfragen eingebettet sind, verursachen HTTP 400-Fehler, wenn sie auf MariaDB ausgeführt werden. Diese Abfragen sind in MySQL 8 gültig, das CTE in skalaren Unterabfragen unterstützt, aber nicht in MariaDB bis zur Version 10.6.
Ein Patch ist verfügbar, um das Verhalten von Ghost anzupassen und diese Fehler zu vermeiden (nehmen Sie den offiziellen Leitfaden zur Kenntnis).
Um diesen Patch zu verwenden, geben Sie diesen Befehl ein:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
Dieser Leitfaden stellt die verschiedenen Aktionen vor, die an einer MySQL-Tabelle möglich sind, je nach den einem Benutzer gewährten Rechten.
Aktionen an Tabellen je nach Benutzerrechten…
… auf Shared Webhosting
Lesen + Schreiben + Admin
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEWLesen + Schreiben
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLELesen
GRANT SELECT… auf Cloud-Server
Lesen + Schreiben + Admin
GRANT ALLLesen + Schreiben
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLESLesen
GRANT SELECT
Diese Anleitung richtet sich an Personen, die mit der Abstraktionsebene Propel arbeiten möchten (die sich auf eine Schlüsselkomponente der Propel-Bibliothek bezieht, ein ORM (Object-Relational Mapping) für PHP).
Vorwort
- Das ORM (Object-Relational Mapping) ermöglicht es, die Objekte einer Anwendung mit den Tabellen einer relationalen Datenbank zu verknüpfen. Anstatt SQL zu schreiben, werden die Daten über Objekte manipuliert.
- Propel, eine Abstraktionsebene in PHP, erleichtert die Erstellung, Manipulation und Abfrage von Objekten, ohne sich um die SQL-Details kümmern zu müssen. Sie ermöglicht das Verwalten von Beziehungen, Joins und Paginierung und verbessert gleichzeitig die Lesbarkeit und Wartbarkeit des Codes.
Besonderheiten & Einschränkungen
- Propel ist nicht standardmäßig als Pear-Paket installiert; das bedeutet, dass Sie es manuell auf Ihrem Server installieren müssen.
- Die Version "Conventionnal Package" von Propel kann installiert werden; laden Sie diese spezifische Version herunter und installieren Sie sie ordnungsgemäß.
- Da die Propel-Befehlszeilen (
propel-genz.B.) nicht zugänglich sind, können Sie diese nicht direkt verwenden. - Das bedeutet, dass Propel nur in der Produktion verwendet werden kann, nachdem Sie die erforderlichen Klassen und Dateien lokal oder in einer anderen Entwicklungsumgebung erstellt haben.
- Alle Manipulationen und Codegenerierungen müssen anderswo durchgeführt werden, bevor die resultierenden Dateien in Ihre Produktionsumgebung übertragen werden.
Abhängigkeiten
- Alle notwendigen Abhängigkeiten für die Verwendung von Propel sind verfügbar, außer Phing.
- Phing ist für die Produktion nicht erforderlich, daher sollte das kein Problem darstellen.
- Stellen Sie sicher, dass alle anderen erforderlichen Abhängigkeiten für Propel korrekt installiert sind.
Dieser Leitfaden stellt Ihnen die offenen Ports zur Verfügung, die für Node.js-Sites (nur) bei Infomaniak gehostet werden.
Ausgehende offene Ports
Web
- HTTP (tcp/80)
- Alternatives HTTP (tcp/8080)
- HTTPS (tcp/443)
- FTP-Daten (tcp/20)
- FTP-Steuerung (tcp/21)
- POP3 (tcp/110)
- IMAP (tcp/143)
- SMTP-Einreichung (+ STARTTLS) (tcp/587)
- SMTPS (tcp/465)
- IMAPS (tcp/993)
- POP3S (tcp/995)
DB
- MySQL (tcp/3306)
- MongoDB (tcp/27017)
- PostgreSQL (tcp/5432)
- Redis (tcp/6379)
- Redis TLS (tcp/6380)
- ElasticSearch (tcp/9200)
Divers
- SSH (tcp/22)
- Git pack transfer (tcp/9418)
Ports ouverts en entrée
- HTTP (tcp/80)
- HTTPS (tcp/443)
- SSH (tcp/22)
Dieser Leitfaden betrifft die OAuth2-Anwendungen, um sich über Ihre Infomaniak-Anmeldeinformationen bei Ihren externen Diensten anzumelden.
Infomaniak OAuth2-Anwendungen verwalten
Dazu:
- Klicken Sie hier, um auf die Verwaltung Ihres Produkts im Infomaniak Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie auf die blaue Schaltfläche Neue Anwendung erstellen:

- Wählen Sie den Typ entsprechend Ihrem Bedarf und Ihrem aktuellen Projekt aus.
- Geben Sie der Anwendung einen Namen.
- Geben Sie die URL der Anwendung gemäß den Ihnen zur Verfügung stehenden technischen Informationen ein.
- Klicken Sie auf die Schaltfläche, um die Anwendung zu erstellen:

- Kopieren Sie die Informationen (
Client ID,Client Secret) an einen sicheren Ort - sie sind danach nicht mehr zugänglich: