<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dge00</id>
	<title>Hostsharing Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hostsharing.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dge00"/>
	<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Spezial:Beitr%C3%A4ge/Dge00"/>
	<updated>2026-04-28T15:22:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=7453</id>
		<title>.htaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=7453"/>
		<updated>2025-11-17T16:56:08Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Redirects */ als &amp;quot;https&amp;quot; geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; Dateien innerhalb der Dokument-Verzeichnisse einer Domain (möglichst in ~/doms/example.com/.htaccess oder gezielt in Unterverzeichnissen subs/www ect. ), können Einstellungen des Apache Webservers konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel kann angegeben werden, welches Apache-Modul für bestimmte Dateien (oder bestimmte Datei-Endungen) benutzt werden soll, wohin Dokumente verschoben worden sind, oder auch, wer Zugriff auf die Dateien hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einstellen von MIME-Typen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
# Download von Zertifikaten ermöglichen:&lt;br /&gt;
AddType application/x-x509-ca-cert .crt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellen des im HTTP Header angegebenen Zeichensatzes ==&lt;br /&gt;
&lt;br /&gt;
für .html Dateien:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
AddCharset UTF-8 .html&lt;br /&gt;
&lt;br /&gt;
# oder&lt;br /&gt;
AddDefaultCharset UTF-8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(für PHP Skripte siehe [[PHP]] )&lt;br /&gt;
&lt;br /&gt;
== Einstellen von Datei Handlern ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
AddType application/x-httpd-phpcgi .php &lt;br /&gt;
Action application/x-httpd-phpcgi /fastcgi-bin/phpstub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passwortschutz für Dateien==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Sofern der Zugriff http Zugriff auf die Dateien nicht automatisch auf https:// bzw. [[TLS_/_SSL|SSL]] umgeleitet wird, können die Passwörter unverschlüsselt übertragen werden!&lt;br /&gt;
&lt;br /&gt;
Zunächst wollen wir den Zugriff auf ein Unterverzeichnis unserer Beispiel-Domain per .htaccess einschränken. Dazu legen wir zunächst eine Passwort-Datei an. Am einfachsten lässt sich diese spezielle Passwort-Datei in einer Shell anlegen. Wir legen sie in das etc-Verzeichnis der Domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ cd ~/doms/example.com/etc&lt;br /&gt;
xyz00-doms@hopi$ htpasswd -c .htpasswd peter&lt;br /&gt;
New password: *****&lt;br /&gt;
Re-type new password: *****&lt;br /&gt;
xyz00-doms@hopi$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim ersten User, hier peter wird das Programm htpasswd mit der Option -c (create) aufgerufen, aber auch wirklich nur beim ersten mal, da sonst die Datei .htpasswd neu erzeugt werden würde und vorherige Einträge damit gelöscht wären.&lt;br /&gt;
&lt;br /&gt;
Sollte es beim Versuch, die Datei anzulegen, zu der Fehlermeldung kommando htpasswd nicht bekannt kommen, dann müssen wir zunächst den Befehl lokalisieren und mit dem richtigen Pfad neu aufrufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ locate htpasswd&lt;br /&gt;
/usr/bin/htpasswd&lt;br /&gt;
xyz00-doms@hopi$ /usr/bin/htpasswd -c .htpasswd peter&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim zweiten User erfolgt der Aufruf dann ohne die Option -c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ htpasswd .htpasswd petra&lt;br /&gt;
New password: *****&lt;br /&gt;
Re-type new password: *****&lt;br /&gt;
xyz00-doms@hopi$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sternchen * stehen selbstverständlich für das jeweilige Passwort, welches dem User zugeordnet werden soll.&lt;br /&gt;
&lt;br /&gt;
Diese Datei könnten wir auch einfach mit scp/pscp oder FTP hochladen, dabei stellt sich dann jedoch die Frage, wie wir sie erzeugen. Auf den meisten Windows-Systemen dürfte kein htpasswd-Kommando verfügbar sein. Für diese Fälle gibt es eine online-Version z.b.: https://de.functions-online.com/crypt.html&lt;br /&gt;
die Ausgabe einfach mit Copy&amp;amp;Paste in eine Datei kopieren und diese hochladen.&lt;br /&gt;
&lt;br /&gt;
Die so angelegte Passwort-Datei kann nun von einer oder mehreren .htaccess-Dateien verwendet werden. Dazu begeben wir uns in das zu schützende Verzeichnis und legen dort eine Datei .htaccess an. Dies kann wieder per Upload oder in einer Shell geschehen. Die Datei kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
order allow,deny&lt;br /&gt;
allow from all&lt;br /&gt;
require valid-user&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/example.com/etc/.htpasswd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei verweist die letzte Zeile auf die von uns angelegte .htpasswd Datei. Zu beachten ist:&lt;br /&gt;
* Dass die Pfadangabe absolut erfolgt, um einen &amp;quot;Internal Server Error&amp;quot; zu vermeiden.&lt;br /&gt;
* Falls die Datei innerhalb des Dokumenten Verzeichnisses liegen muss, sie auf jeden Fall .htpasswd heißt, damit sie vom Webserver nicht herausgegeben wird.&lt;br /&gt;
* Die .htaccess Datei in den Paketdomains innerhalb des web/ bzw. web-ssl/ Verzeichnisses liegen muss, damit kein &amp;quot;Internal Server Error&amp;quot; auftritt.&lt;br /&gt;
&lt;br /&gt;
===Passwortschutz von CGI- und PHP-Anwendungen===&lt;br /&gt;
&lt;br /&gt;
Mit dem beschriebenen Mechanismus können selbstverständlich auch PHP-Skripte und CGI-Anwendungen vor unberechtigten Zugriffen geschützt werden. In dem geschützten Skript kann über die Umgebungsvariable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; der Benutzername des Benutzers abgefragt werden, der sich angemeldet hat.&lt;br /&gt;
&lt;br /&gt;
In PHP-Skripten kann mit Hilfe der automatisch global sichtbaren Variablen &amp;lt;code&amp;gt;$_ENV&amp;lt;/code&amp;gt; auf die Umgebungsvariablen zugegriffen werden. Um die Variable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; zu lesen, schreibt man also &amp;lt;code&amp;gt;$_ENV[&#039;REDIRECT_REMOTE_USER&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Passwortschutz abhängig vom REQUEST_URI ===&lt;br /&gt;
&lt;br /&gt;
Falls ich für eine oder mehrere REQUEST_URI eine htpasswd Abfrage möchte, z.B. für Keycloak Admin Login:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
SetEnvIf REQUEST_URI ^/realms/master/.* HTTPAUTHPROTECT&lt;br /&gt;
&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/login.beispielverein.de/.htpasswd&lt;br /&gt;
&lt;br /&gt;
Order Allow,Deny&lt;br /&gt;
Satisfy any&lt;br /&gt;
Require valid-user&lt;br /&gt;
Allow from all&lt;br /&gt;
Deny from env=HTTPAUTHPROTECT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anders herum würde es auch gehen: Wenn ich für eine oder mehrere REQUEST_URI keine htpasswd Abfrage möchte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
SetEnvIf REQUEST_URI ^/public/.* NOPASSWD&lt;br /&gt;
&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/app.beispielverein.de/.htpasswd&lt;br /&gt;
&lt;br /&gt;
Order Deny,Allow&lt;br /&gt;
Satisfy Any&lt;br /&gt;
Deny from all&lt;br /&gt;
Require valid-user&lt;br /&gt;
Allow from env=NOPASSWD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siehe auch [https://stackoverflow.com/a/11439361/1632368] für eine Erklärung.&lt;br /&gt;
&lt;br /&gt;
=== Cryptpad als Beispiel für SetEnvIf und env in Headern ===&lt;br /&gt;
&lt;br /&gt;
Im Vergleich zum vorherigen Beispiel ist die .htaccess Datei von Cryptpad noch komplexer, siehe [[Cryptpad#Webserver_Konfiguration]].&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel können Umgebungsvariablen auch wieder zurückgesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
SetEnvIfNoCase Host ^(?!sandbox\.).*$ !SET_UNSAFE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und Header können gesetzt werden, abhängig davon ob die Umgebungsvariable gesetzt wurde oder nicht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
Header Set DebugAllowAllOrigins &amp;quot;allowall&amp;quot; env=ALLOW_ALL_ORIGINS&lt;br /&gt;
Header Set DebugAllowOrigins &amp;quot;sandboxonly&amp;quot; env=!ALLOW_ALL_ORIGINS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachte: &amp;lt;code&amp;gt;SetEnv&amp;lt;/code&amp;gt; kann in diesem Fall nicht eingesetzt werden, der Wert der Variablen steht einfach noch nicht zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das geht nicht&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
SetEnv MYTEST true&lt;br /&gt;
&amp;lt;If &amp;quot;%{ENV:MYTEST} == &#039;true&#039;&amp;quot;&amp;gt;&lt;br /&gt;
Header Set DebugMyTest1 &amp;quot;DebugMyTest1&amp;quot;&lt;br /&gt;
&amp;lt;/If&amp;gt;&lt;br /&gt;
Header Set DebugMyTest2 &amp;quot;%{ENV:MYTEST}e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
Redirect permanent / https://www.example.com/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rewrite Rules ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^mailman/(.*)$      /cgi-bin/mailman/$1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oder auch zum Testen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteRule &amp;quot;push/(.*)$&amp;quot; https://www.hostsharing.net/push/$1 [last]&lt;br /&gt;
RewriteRule &amp;quot;/(.*)$&amp;quot; https://www.hostsharing.net/alles/$1 [last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit curl testen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
curl -XGET https://hello.beispielverein.de/push/test -I&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gibt aus, wohin der Redirect geht: z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
Location: https://www.hostsharing.net/push/test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nur SSL erlauben und automatisch umschalten ==&lt;br /&gt;
&lt;br /&gt;
Bei per Symlink zusammengeschalteten Verzeichnissen, kann dies für die Verzeichnisse auf die nur per SSL zugegriffen werden soll, wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
# SSL so fordern, dass ggf. Basic Auth nur einmal innerhalb von SSL abgefragt wird.&lt;br /&gt;
#&lt;br /&gt;
#SSLOptions +StrictRequire  #Bei HS festgelegt.&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
ErrorDocument 403 https://xyz00.hostsharing.net/https/URL/mit/entspechendem/Ziel/Verzeichnis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird auf eine xyz00 Domain umgeleitet für die das HS Zertifikat gilt. Liegen die Seiten nicht dort ist die entprechende URL des Speicherortes mit https:// anzugegeben.&lt;br /&gt;
&lt;br /&gt;
Bei separaten Verzeichnissen für ssl und nicht-ssl kann auch ein permanenter Redirekt gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
Redirect permanent / https://www.example.org/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um alle http Requests nach https weiter zu leiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{SERVER_PORT} !=443&lt;br /&gt;
RewriteRule .* https://%{HTTP_HOST}:443%{REQUEST_URI} [QSA,R=permanent,L]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Verzeichnislisting ausschalten==&lt;br /&gt;
&lt;br /&gt;
Ruft ein Nutzer ein Verzeichnis auf, z.B. www.example.com/verzeichnis, so wird normalerweise die sich darin befindliche index.html als Standard aufgerufen. Gibt es diese Datei nicht, wird der Inhalt des Verzeichnisses gelistet. Das kann ein Sicherheitsproblem sein.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
IndexIgnore * &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
sorgt dafür, dass alle Datein Unterhalb des Speicherortes der .htaccess Datei für das Verzeichnislisting ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Listen der Verzeichnisse kann auch schon auf Dateisystemebene durch ändern der Verzeichnisrechte (o-r) unterbunden werden, wodurch auch lokale User berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
== Ausnahme die eigene IP-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Zum Testen willst du möglicherweise auf ein anderes Backend zugreifen, als es die normalen Webseiten-Besucherinnen tun. Du kannst die eigene IP-Adresse als &amp;quot;RewriteCond&amp;quot; verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteCond %{REMOTE_ADDR} !=62.27.244.230&lt;br /&gt;
RewriteRule ^(.*) ajp://hsh02.hostsharing.net:8009/$1 [proxy,last]&lt;br /&gt;
 &lt;br /&gt;
RewriteRule ^(.*) ajp://127.0.0.1:34380/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestimmte Clients blockieren ==&lt;br /&gt;
&lt;br /&gt;
Jeder Web-Browser gibt sich mit einer Kennung zu erkennen. Auch Bots sollten sich mit einer bestimmten Kennung zu erkennen geben. Diese Kennung wird ersichtlich, wenn Du die web.log Datei durchsuchst (siehe [[Traffic]]). Damit ist es möglich, bestimmte Clients oder Bots auszuschließen.&lt;br /&gt;
&lt;br /&gt;
Hier im Beispiel werden der SemrushBot, der MJ12bot, und der AI Bot Claude von Anthropic ausgeschlossen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*SemrushBot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*MJ12bot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*ClaudeBot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^-$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^$&lt;br /&gt;
RewriteRule ^.* - [F,L]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe auch https://stackoverflow.com/a/35775449/1632368&lt;br /&gt;
&lt;br /&gt;
Mit Curl kannst du prüfen, ob der entsprechende Agent blockiert wird (es sollte der Fehlercode 403 geliefert werden, statt 200):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
curl -XGET https://www.meineseite.de -I -H &amp;quot;User-Agent: SemrushBot&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestimmte Verzeichnisse nicht ausliefern ==&lt;br /&gt;
&lt;br /&gt;
zum Beispiel das .git Verzeichnis sollte nicht gezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RedirectMatch 404 /\.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder wenn Wordpress für alle URLs mit HTTP Code 200 die Startseite anzeigt, denken manche Angreifer, es läuft ein mailman.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RedirectMatch 404 /mailman/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesperrte Optionen ==&lt;br /&gt;
&lt;br /&gt;
Einstellungen, die es ermöglichen würden, über den Webserver Rechte anderer&lt;br /&gt;
User zu erhalten, sind nicht erlaubt.&lt;br /&gt;
--&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=7449</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=7449"/>
		<updated>2025-11-14T21:05:26Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Versucht Links von 404 auf einigermaßen sinnvolle Seiten zu setzen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|gruen|Hinweis:|Datenbanken in der HS Kern-Dokumentation:&lt;br /&gt;
https://www.hostsharing.net/doc/managed-operations-platform/datenbanken/ und https://www.hostsharing.net/doc/managed-operations-platform/tutorials/datenbank/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Datenbank anlegen ==&lt;br /&gt;
&lt;br /&gt;
erfolgt mit [https://www.hostsharing.net/doc/managed-operations-platform/hsadmin/webfrontend/ hsadmin] siehe [https://www.hostsharing.net/doc/managed-operations-platform/tutorials/datenbank/ Datenbanken].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
Die Administration einer Mysql-Datenbank (das Verwalten von Tabellen) erfolgt üblicherweise mit [https://phpmyadmin.hostsharing.net/current/ PhpMyAdmin]&lt;br /&gt;
&lt;br /&gt;
== Der MySQL Command Line Client ==&lt;br /&gt;
&lt;br /&gt;
Mit einem Datenbanknutzer kann auch direkt im [https://dev.mysql.com/doc/refman/5.7/en/mysql.html MySQL Command Line Client] gearbeitet werden, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Client wird auf der [[Shell]] mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen – auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00_otto -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Client wieder verlässt.&lt;br /&gt;
&lt;br /&gt;
=== Rechte an der Datenbank vergeben ===&lt;br /&gt;
&lt;br /&gt;
Optional kann man weitere Datenbank-User anlegen, denen man nur dedizierte Rechte für die neue Datenbank erteilt. Dafür werden die normalen SQL-Befehle verwendet. Der Datenbankadmin muss sich mit Hilfe des Kommandozeilen-Werkzeugs mysql mit der Datenbank verbinden und dann die Rechte wie gewünscht vergeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@host:~$ mysql -u xyz00-otto -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL ...&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER ON xyz00_beispiel.* TO xyz00_beispiel;&lt;br /&gt;
Query OK, 0 rows affected (0.01 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; exit&lt;br /&gt;
Bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem obigen GRANT-Befehl werden dem Benutzer alle Rechte an der Datenbank gegeben. In der Regel wird dies nicht notwendig sein; es ist sicherer, dem Benutzer nur die tatsächlich benötigten Rechte einzuräumen. Eine Auflistung der verschiedenen Rechte befindet sich in der MySQL-Dokumentation zum GRANT-Befehl.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank testen ===&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte der Benutzer die Datenbank nutzen können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@host:~$ mysql -D xyz00_beispiel -u xyz00_beispiel -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausprobieren, kann man dies Beispielsweise durch das Anlegen und Löschen einer Tabelle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; create table test(id INT);&lt;br /&gt;
Query OK, 0 rows affected (0.86 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; show tables;&lt;br /&gt;
+--------------------------+&lt;br /&gt;
| Tables_in_xyz00_beispiel |&lt;br /&gt;
+--------------------------+&lt;br /&gt;
| test                     |&lt;br /&gt;
+--------------------------+&lt;br /&gt;
1 row in set&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; drop table test;&lt;br /&gt;
Query ok, 0 rows affected (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; exit&lt;br /&gt;
Bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Anlegen und Löschen einer Tabelle funktioniert dabei natürlich nur, wenn dem Benutzer auch tatsächlich die dafür nötigen Rechte eingeräumt wurden. In der Regel wird ein Benutzerkonto, das für die Verwendung in einer Web-Anwendung eingerichtet wurde, diese Rechte nicht benötigen. Es ist dann sicherer, diese Rechte auch nicht zu vergeben.&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Datenbank-Administrator, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
=== Import eines Mysql-Dump in eine leere Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Wurde eine Mysql Datenbank in eine Datei exportiert (als eine Folge von SQL-Befehle in einer Textdatei, hier mit dem Namen backup_xyz.sql) , kann sie mit folgendem Befehl auf der Shell in die Datenbank xyz00_beispiel des Benutzers xyz00_beispiel importiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql --user xyz00_beispiel -p xyz00_beispiel &amp;lt; backup_xyz00_beispiel.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Export einer Mysql Datenbank in eine Textdatei ===&lt;br /&gt;
&lt;br /&gt;
Um eine Datenbank auf der Shell in eine Textdatei zu exportieren, dient dieser Befehl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysqldump --user xyz00_beispiel -p xyz00_beispiel &amp;gt; backup_xyz00_beispiel.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Mysql]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=7448</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=MySQL&amp;diff=7448"/>
		<updated>2025-11-14T18:08:47Z</updated>

		<summary type="html">&lt;p&gt;Dge00: https://www.hostsharing.net/doc/managed-operations-platform/datenbanken/ Einstieg Datenbanken LInk war tot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Textkasten|gruen|Hinweis:|Datenbanken in der HS Kern-Dokumentation:&lt;br /&gt;
https://www.hostsharing.net/doc/managed-operations-platform/datenbanken/ und https://www.hostsharing.net/doc/managed-operations-platform/tutorials/datenbank/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Datenbank anlegen ==&lt;br /&gt;
&lt;br /&gt;
erfolgt mit [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin] siehe [https://doc.hostsharing.net/users/administration/datenbanken/index.html Datenbanken].&lt;br /&gt;
&lt;br /&gt;
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.&lt;br /&gt;
&lt;br /&gt;
Beispiele gültiger Datenbanken für ein Paket &amp;lt;b&amp;gt;xyz00&amp;lt;/b&amp;gt;:&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_anna&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;xyz00_db_fuer_hans&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
Die Administration einer Mysql-Datenbank (das Verwalten von Tabellen) erfolgt üblicherweise mit [https://phpmyadmin.hostsharing.net/current/ PhpMyAdmin]&lt;br /&gt;
&lt;br /&gt;
== Der MySQL Command Line Client ==&lt;br /&gt;
&lt;br /&gt;
Mit einem Datenbanknutzer kann auch direkt im [https://dev.mysql.com/doc/refman/5.7/en/mysql.html MySQL Command Line Client] gearbeitet werden, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Client wird auf der [[Shell]] mit dem Befehl &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt; aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen – auch auf den Paketadmin-Account.&lt;br /&gt;
&lt;br /&gt;
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hopi$ mysql -u xyz00_otto -p&lt;br /&gt;
Enter password: password&lt;br /&gt;
Welcome to the MySQL monitor. Commands end with ; or \g.&lt;br /&gt;
Your MySQL connection id is 1257230 to server version: 3.23.49-log&lt;br /&gt;
Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the buffer.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Client wieder verlässt.&lt;br /&gt;
&lt;br /&gt;
=== Rechte an der Datenbank vergeben ===&lt;br /&gt;
&lt;br /&gt;
Optional kann man weitere Datenbank-User anlegen, denen man nur dedizierte Rechte für die neue Datenbank erteilt. Dafür werden die normalen SQL-Befehle verwendet. Der Datenbankadmin muss sich mit Hilfe des Kommandozeilen-Werkzeugs mysql mit der Datenbank verbinden und dann die Rechte wie gewünscht vergeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@host:~$ mysql -u xyz00-otto -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL ...&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER ON xyz00_beispiel.* TO xyz00_beispiel;&lt;br /&gt;
Query OK, 0 rows affected (0.01 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; exit&lt;br /&gt;
Bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem obigen GRANT-Befehl werden dem Benutzer alle Rechte an der Datenbank gegeben. In der Regel wird dies nicht notwendig sein; es ist sicherer, dem Benutzer nur die tatsächlich benötigten Rechte einzuräumen. Eine Auflistung der verschiedenen Rechte befindet sich in der MySQL-Dokumentation zum GRANT-Befehl.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank testen ===&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte der Benutzer die Datenbank nutzen können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@host:~$ mysql -D xyz00_beispiel -u xyz00_beispiel -p&lt;br /&gt;
Enter password:&lt;br /&gt;
Welcome to the MySQL ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausprobieren, kann man dies Beispielsweise durch das Anlegen und Löschen einer Tabelle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; create table test(id INT);&lt;br /&gt;
Query OK, 0 rows affected (0.86 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; show tables;&lt;br /&gt;
+--------------------------+&lt;br /&gt;
| Tables_in_xyz00_beispiel |&lt;br /&gt;
+--------------------------+&lt;br /&gt;
| test                     |&lt;br /&gt;
+--------------------------+&lt;br /&gt;
1 row in set&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; drop table test;&lt;br /&gt;
Query ok, 0 rows affected (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; exit&lt;br /&gt;
Bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Anlegen und Löschen einer Tabelle funktioniert dabei natürlich nur, wenn dem Benutzer auch tatsächlich die dafür nötigen Rechte eingeräumt wurden. In der Regel wird ein Benutzerkonto, das für die Verwendung in einer Web-Anwendung eingerichtet wurde, diese Rechte nicht benötigen. Es ist dann sicherer, diese Rechte auch nicht zu vergeben.&lt;br /&gt;
&lt;br /&gt;
=== Rechte vergeben ===&lt;br /&gt;
&lt;br /&gt;
Allen Benutzern, außer dem Datenbank-Administrator, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl &amp;lt;b&amp;gt;GRANT&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt;GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren. &lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;b&amp;gt;GRANT ALL&amp;lt;/b&amp;gt; kann man einem User auch alle Kommandorechte zuweisen.&lt;br /&gt;
&lt;br /&gt;
Alle Aufgaben können wir jetzt in Zukunft vom User &amp;lt;b&amp;gt;xyz00_otto&amp;lt;/b&amp;gt; erledigen lassen.&lt;br /&gt;
&lt;br /&gt;
=== Import eines Mysql-Dump in eine leere Datenbank ===&lt;br /&gt;
&lt;br /&gt;
Wurde eine Mysql Datenbank in eine Datei exportiert (als eine Folge von SQL-Befehle in einer Textdatei, hier mit dem Namen backup_xyz.sql) , kann sie mit folgendem Befehl auf der Shell in die Datenbank xyz00_beispiel des Benutzers xyz00_beispiel importiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysql --user xyz00_beispiel -p xyz00_beispiel &amp;lt; backup_xyz00_beispiel.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Export einer Mysql Datenbank in eine Textdatei ===&lt;br /&gt;
&lt;br /&gt;
Um eine Datenbank auf der Shell in eine Textdatei zu exportieren, dient dieser Befehl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
mysqldump --user xyz00_beispiel -p xyz00_beispiel &amp;gt; backup_xyz00_beispiel.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verschiedenes ==&lt;br /&gt;
&lt;br /&gt;
* Web-Frontend: [http://www.phpmyadmin.net phpMyAdmin] ist unter https://phpmyadmin.hostsharing.net/current erreichbar.&lt;br /&gt;
* Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Datenbanken]]&lt;br /&gt;
[[Kategorie:Mysql]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=7447</id>
		<title>.htaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=.htaccess&amp;diff=7447"/>
		<updated>2025-11-14T18:03:34Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Grammatik&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; Dateien innerhalb der Dokument-Verzeichnisse einer Domain (möglichst in ~/doms/example.com/.htaccess oder gezielt in Unterverzeichnissen subs/www ect. ), können Einstellungen des Apache Webservers konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel kann angegeben werden, welches Apache-Modul für bestimmte Dateien (oder bestimmte Datei-Endungen) benutzt werden soll, wohin Dokumente verschoben worden sind, oder auch, wer Zugriff auf die Dateien hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einstellen von MIME-Typen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
# Download von Zertifikaten ermöglichen:&lt;br /&gt;
AddType application/x-x509-ca-cert .crt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einstellen des im HTTP Header angegebenen Zeichensatzes ==&lt;br /&gt;
&lt;br /&gt;
für .html Dateien:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
AddCharset UTF-8 .html&lt;br /&gt;
&lt;br /&gt;
# oder&lt;br /&gt;
AddDefaultCharset UTF-8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(für PHP Skripte siehe [[PHP]] )&lt;br /&gt;
&lt;br /&gt;
== Einstellen von Datei Handlern ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
AddType application/x-httpd-phpcgi .php &lt;br /&gt;
Action application/x-httpd-phpcgi /fastcgi-bin/phpstub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passwortschutz für Dateien==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Sofern der Zugriff http Zugriff auf die Dateien nicht automatisch auf https:// bzw. [[TLS_/_SSL|SSL]] umgeleitet wird, können die Passwörter unverschlüsselt übertragen werden!&lt;br /&gt;
&lt;br /&gt;
Zunächst wollen wir den Zugriff auf ein Unterverzeichnis unserer Beispiel-Domain per .htaccess einschränken. Dazu legen wir zunächst eine Passwort-Datei an. Am einfachsten lässt sich diese spezielle Passwort-Datei in einer Shell anlegen. Wir legen sie in das etc-Verzeichnis der Domain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ cd ~/doms/example.com/etc&lt;br /&gt;
xyz00-doms@hopi$ htpasswd -c .htpasswd peter&lt;br /&gt;
New password: *****&lt;br /&gt;
Re-type new password: *****&lt;br /&gt;
xyz00-doms@hopi$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim ersten User, hier peter wird das Programm htpasswd mit der Option -c (create) aufgerufen, aber auch wirklich nur beim ersten mal, da sonst die Datei .htpasswd neu erzeugt werden würde und vorherige Einträge damit gelöscht wären.&lt;br /&gt;
&lt;br /&gt;
Sollte es beim Versuch, die Datei anzulegen, zu der Fehlermeldung kommando htpasswd nicht bekannt kommen, dann müssen wir zunächst den Befehl lokalisieren und mit dem richtigen Pfad neu aufrufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ locate htpasswd&lt;br /&gt;
/usr/bin/htpasswd&lt;br /&gt;
xyz00-doms@hopi$ /usr/bin/htpasswd -c .htpasswd peter&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim zweiten User erfolgt der Aufruf dann ohne die Option -c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
xyz00-doms@hopi$ htpasswd .htpasswd petra&lt;br /&gt;
New password: *****&lt;br /&gt;
Re-type new password: *****&lt;br /&gt;
xyz00-doms@hopi$&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sternchen * stehen selbstverständlich für das jeweilige Passwort, welches dem User zugeordnet werden soll.&lt;br /&gt;
&lt;br /&gt;
Diese Datei könnten wir auch einfach mit scp/pscp oder FTP hochladen, dabei stellt sich dann jedoch die Frage, wie wir sie erzeugen. Auf den meisten Windows-Systemen dürfte kein htpasswd-Kommando verfügbar sein. Für diese Fälle gibt es eine online-Version z.b.: https://de.functions-online.com/crypt.html&lt;br /&gt;
die Ausgabe einfach mit Copy&amp;amp;Paste in eine Datei kopieren und diese hochladen.&lt;br /&gt;
&lt;br /&gt;
Die so angelegte Passwort-Datei kann nun von einer oder mehreren .htaccess-Dateien verwendet werden. Dazu begeben wir uns in das zu schützende Verzeichnis und legen dort eine Datei .htaccess an. Dies kann wieder per Upload oder in einer Shell geschehen. Die Datei kann beispielsweise so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
order allow,deny&lt;br /&gt;
allow from all&lt;br /&gt;
require valid-user&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/example.com/etc/.htpasswd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei verweist die letzte Zeile auf die von uns angelegte .htpasswd Datei. Zu beachten ist:&lt;br /&gt;
* Dass die Pfadangabe absolut erfolgt, um einen &amp;quot;Internal Server Error&amp;quot; zu vermeiden.&lt;br /&gt;
* Falls die Datei innerhalb des Dokumenten Verzeichnisses liegen muss, sie auf jeden Fall .htpasswd heißt, damit sie vom Webserver nicht herausgegeben wird.&lt;br /&gt;
* Die .htaccess Datei in den Paketdomains innerhalb des web/ bzw. web-ssl/ Verzeichnisses liegen muss, damit kein &amp;quot;Internal Server Error&amp;quot; auftritt.&lt;br /&gt;
&lt;br /&gt;
===Passwortschutz von CGI- und PHP-Anwendungen===&lt;br /&gt;
&lt;br /&gt;
Mit dem beschriebenen Mechanismus können selbstverständlich auch PHP-Skripte und CGI-Anwendungen vor unberechtigten Zugriffen geschützt werden. In dem geschützten Skript kann über die Umgebungsvariable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; der Benutzername des Benutzers abgefragt werden, der sich angemeldet hat.&lt;br /&gt;
&lt;br /&gt;
In PHP-Skripten kann mit Hilfe der automatisch global sichtbaren Variablen &amp;lt;code&amp;gt;$_ENV&amp;lt;/code&amp;gt; auf die Umgebungsvariablen zugegriffen werden. Um die Variable &amp;lt;code&amp;gt;REDIRECT_REMOTE_USER&amp;lt;/code&amp;gt; zu lesen, schreibt man also &amp;lt;code&amp;gt;$_ENV[&#039;REDIRECT_REMOTE_USER&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Passwortschutz abhängig vom REQUEST_URI ===&lt;br /&gt;
&lt;br /&gt;
Falls ich für eine oder mehrere REQUEST_URI eine htpasswd Abfrage möchte, z.B. für Keycloak Admin Login:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
SetEnvIf REQUEST_URI ^/realms/master/.* HTTPAUTHPROTECT&lt;br /&gt;
&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/login.beispielverein.de/.htpasswd&lt;br /&gt;
&lt;br /&gt;
Order Allow,Deny&lt;br /&gt;
Satisfy any&lt;br /&gt;
Require valid-user&lt;br /&gt;
Allow from all&lt;br /&gt;
Deny from env=HTTPAUTHPROTECT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anders herum würde es auch gehen: Wenn ich für eine oder mehrere REQUEST_URI keine htpasswd Abfrage möchte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
SetEnvIf REQUEST_URI ^/public/.* NOPASSWD&lt;br /&gt;
&lt;br /&gt;
Authname &amp;quot;Privater Bereich, bitte Anmelden.&amp;quot;&lt;br /&gt;
Authtype Basic&lt;br /&gt;
AuthUserFile /home/doms/app.beispielverein.de/.htpasswd&lt;br /&gt;
&lt;br /&gt;
Order Deny,Allow&lt;br /&gt;
Satisfy Any&lt;br /&gt;
Deny from all&lt;br /&gt;
Require valid-user&lt;br /&gt;
Allow from env=NOPASSWD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siehe auch [https://stackoverflow.com/a/11439361/1632368] für eine Erklärung.&lt;br /&gt;
&lt;br /&gt;
=== Cryptpad als Beispiel für SetEnvIf und env in Headern ===&lt;br /&gt;
&lt;br /&gt;
Im Vergleich zum vorherigen Beispiel ist die .htaccess Datei von Cryptpad noch komplexer, siehe [[Cryptpad#Webserver_Konfiguration]].&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel können Umgebungsvariablen auch wieder zurückgesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
SetEnvIfNoCase Host ^(?!sandbox\.).*$ !SET_UNSAFE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und Header können gesetzt werden, abhängig davon ob die Umgebungsvariable gesetzt wurde oder nicht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
Header Set DebugAllowAllOrigins &amp;quot;allowall&amp;quot; env=ALLOW_ALL_ORIGINS&lt;br /&gt;
Header Set DebugAllowOrigins &amp;quot;sandboxonly&amp;quot; env=!ALLOW_ALL_ORIGINS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachte: &amp;lt;code&amp;gt;SetEnv&amp;lt;/code&amp;gt; kann in diesem Fall nicht eingesetzt werden, der Wert der Variablen steht einfach noch nicht zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das geht nicht&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache&amp;gt;&lt;br /&gt;
SetEnv MYTEST true&lt;br /&gt;
&amp;lt;If &amp;quot;%{ENV:MYTEST} == &#039;true&#039;&amp;quot;&amp;gt;&lt;br /&gt;
Header Set DebugMyTest1 &amp;quot;DebugMyTest1&amp;quot;&lt;br /&gt;
&amp;lt;/If&amp;gt;&lt;br /&gt;
Header Set DebugMyTest2 &amp;quot;%{ENV:MYTEST}e&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redirects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
Redirect permanent / http://www.example.com/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rewrite Rules ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^mailman/(.*)$      /cgi-bin/mailman/$1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oder auch zum Testen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteRule &amp;quot;push/(.*)$&amp;quot; https://www.hostsharing.net/push/$1 [last]&lt;br /&gt;
RewriteRule &amp;quot;/(.*)$&amp;quot; https://www.hostsharing.net/alles/$1 [last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit curl testen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
curl -XGET https://hello.beispielverein.de/push/test -I&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gibt aus, wohin der Redirect geht: z.B.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
Location: https://www.hostsharing.net/push/test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nur SSL erlauben und automatisch umschalten ==&lt;br /&gt;
&lt;br /&gt;
Bei per Symlink zusammengeschalteten Verzeichnissen, kann dies für die Verzeichnisse auf die nur per SSL zugegriffen werden soll, wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
# SSL so fordern, dass ggf. Basic Auth nur einmal innerhalb von SSL abgefragt wird.&lt;br /&gt;
#&lt;br /&gt;
#SSLOptions +StrictRequire  #Bei HS festgelegt.&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
ErrorDocument 403 https://xyz00.hostsharing.net/https/URL/mit/entspechendem/Ziel/Verzeichnis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird auf eine xyz00 Domain umgeleitet für die das HS Zertifikat gilt. Liegen die Seiten nicht dort ist die entprechende URL des Speicherortes mit https:// anzugegeben.&lt;br /&gt;
&lt;br /&gt;
Bei separaten Verzeichnissen für ssl und nicht-ssl kann auch ein permanenter Redirekt gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
Redirect permanent / https://www.example.org/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um alle http Requests nach https weiter zu leiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{SERVER_PORT} !=443&lt;br /&gt;
RewriteRule .* https://%{HTTP_HOST}:443%{REQUEST_URI} [QSA,R=permanent,L]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Verzeichnislisting ausschalten==&lt;br /&gt;
&lt;br /&gt;
Ruft ein Nutzer ein Verzeichnis auf, z.B. www.example.com/verzeichnis, so wird normalerweise die sich darin befindliche index.html als Standard aufgerufen. Gibt es diese Datei nicht, wird der Inhalt des Verzeichnisses gelistet. Das kann ein Sicherheitsproblem sein.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
IndexIgnore * &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
sorgt dafür, dass alle Datein Unterhalb des Speicherortes der .htaccess Datei für das Verzeichnislisting ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Listen der Verzeichnisse kann auch schon auf Dateisystemebene durch ändern der Verzeichnisrechte (o-r) unterbunden werden, wodurch auch lokale User berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
== Ausnahme die eigene IP-Adresse ==&lt;br /&gt;
&lt;br /&gt;
Zum Testen willst du möglicherweise auf ein anderes Backend zugreifen, als es die normalen Webseiten-Besucherinnen tun. Du kannst die eigene IP-Adresse als &amp;quot;RewriteCond&amp;quot; verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
DirectoryIndex disabled&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteCond %{REMOTE_ADDR} !=62.27.244.230&lt;br /&gt;
RewriteRule ^(.*) ajp://hsh02.hostsharing.net:8009/$1 [proxy,last]&lt;br /&gt;
 &lt;br /&gt;
RewriteRule ^(.*) ajp://127.0.0.1:34380/$1 [proxy,last]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestimmte Clients blockieren ==&lt;br /&gt;
&lt;br /&gt;
Jeder Web-Browser gibt sich mit einer Kennung zu erkennen. Auch Bots sollten sich mit einer bestimmten Kennung zu erkennen geben. Diese Kennung wird ersichtlich, wenn Du die web.log Datei durchsuchst (siehe [[Traffic]]). Damit ist es möglich, bestimmte Clients oder Bots auszuschließen.&lt;br /&gt;
&lt;br /&gt;
Hier im Beispiel werden der SemrushBot, der MJ12bot, und der AI Bot Claude von Anthropic ausgeschlossen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteBase /&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*SemrushBot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*MJ12bot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^.*ClaudeBot.*$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^-$ [OR]&lt;br /&gt;
RewriteCond %{HTTP_USER_AGENT} ^$&lt;br /&gt;
RewriteRule ^.* - [F,L]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe auch https://stackoverflow.com/a/35775449/1632368&lt;br /&gt;
&lt;br /&gt;
Mit Curl kannst du prüfen, ob der entsprechende Agent blockiert wird (es sollte der Fehlercode 403 geliefert werden, statt 200):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
curl -XGET https://www.meineseite.de -I -H &amp;quot;User-Agent: SemrushBot&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestimmte Verzeichnisse nicht ausliefern ==&lt;br /&gt;
&lt;br /&gt;
zum Beispiel das .git Verzeichnis sollte nicht gezeigt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RedirectMatch 404 /\.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder wenn Wordpress für alle URLs mit HTTP Code 200 die Startseite anzeigt, denken manche Angreifer, es läuft ein mailman.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
RedirectMatch 404 /mailman/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesperrte Optionen ==&lt;br /&gt;
&lt;br /&gt;
Einstellungen, die es ermöglichen würden, über den Webserver Rechte anderer&lt;br /&gt;
User zu erhalten, sind nicht erlaubt.&lt;br /&gt;
--&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Login_mit_SSH&amp;diff=7311</id>
		<title>Login mit SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Login_mit_SSH&amp;diff=7311"/>
		<updated>2025-03-14T21:26:47Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Zeitlimit als Problem erklärt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Baustelle}}&lt;br /&gt;
&lt;br /&gt;
Um sich einloggen zu können, brauchst Du natürlich die Daten, die Dir von Hostsharing in einer Mail nach der Anmeldung zugeschickt wurden: &lt;br /&gt;
&lt;br /&gt;
Hostname: &#039;&#039;&#039;xyz00.hostsharing.net&#039;&#039;&#039; (wenn eine eigene Domain konnektiert ist auch &amp;lt;eigene-domain&amp;gt;.&amp;lt;tld&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Username: &#039;&#039;&#039;xyz00&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Passwort: &#039;&#039;&#039;(wie in der automatischen Mail mitgeteilt)&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei xyz00 handelt es sich um den Account des Paket-Admins. Initial ist für jedes neue Paket nur ein Admin-Account eingerichtet, dessen Benutzername die Form &#039;&#039;&#039;xyz00&#039;&#039;&#039; besitzt. &lt;br /&gt;
&lt;br /&gt;
Da dieser Account sehr viel Macht über das Paket hat, darf er nur über sichere Protokolle wie SSH benutzt werden. Unsichere Protokolle wie direktes FTP dürfen nicht verwendet werden, da diese die Passwörter im Klartext übertragen. Jeder Administrator auf der Übertragungsstrecke könnte mitlesen. &lt;br /&gt;
&lt;br /&gt;
Gleich vorab: Seine Website kann man später freilich über einen separaten Account per ftps, sftp, scp (und zur Not auch ftp) hochladen, doch dazu später mehr.&lt;br /&gt;
&lt;br /&gt;
Linux Systeme haben meist ssh, scp und sftp Clients vorinstalliert. Eine Freie Software zum sicheren Dateitransfer für Windows ist z.B. [http://winscp.net WinSCP] und ein Shell Zugang mit [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. &lt;br /&gt;
&lt;br /&gt;
Nach der ggf. nötigen Installation eines ssh Clients, die hier nicht beschrieben werden, da sie nicht Hostsharing-spezifisch ist, kann der erste Login erfolgen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
&lt;br /&gt;
Mit OpenSSH ist der Aufruf auf der Kommandozeile z.B. folgender: &lt;br /&gt;
&lt;br /&gt;
 ssh xyz00@xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
Nach Aufbau der Verbindung wird dann das [[Passwort]] erfragt.&lt;br /&gt;
Danach erscheint in etwa folgende Bildschirmausgabe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Last login: Fri Apr 19 06:43:45 2002 from p5081f0c7.dip.t-dialin.net on pts/7&lt;br /&gt;
&lt;br /&gt;
Linux hopi 2.4.17 #2 SMP Thu Jan 17 14:35:38 CET 2002 i686 unknown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
+----------------------------------------------------------------+&lt;br /&gt;
| hopi.hostsharing.net |&lt;br /&gt;
| Bei Fragen oder Problemen bitte E-Mail an: |&lt;br /&gt;
| support@hostsharing.net (öffentliche Mailingliste) |&lt;br /&gt;
+----------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
Last login: Fri Apr 19 09:36:34 2002 from 62.156.160.59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xyz0@hopi:~$ █&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es macht durchaus Sinn, die ganz oben genannte &amp;quot;Last Login&amp;quot; Zeile zu prüfen, ob man dies auch selbst war (Uhrzeit und Provider), unten die &amp;quot;Last Login&amp;quot; Zeile gibt genau genommen das aktuelle Login aus, weil der Programmteil nach dem eigentlichen Login ausgeführt wird. &lt;br /&gt;
&lt;br /&gt;
Als nächstes ändern wir gleich unser [[Passwort]], da dieses schließlich unverschlüsselt per E-Mail versendet wurde. Dies geschieht unter UNIX mit dem Kommando passwd&lt;br /&gt;
&lt;br /&gt;
== Passwort ändern ==&lt;br /&gt;
&lt;br /&gt;
Eine Änderung des Passwortes geht dem Befehl passwd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hopi:~$ passwd&lt;br /&gt;
&lt;br /&gt;
Changing password for xyz00&lt;br /&gt;
&lt;br /&gt;
(current) UNIX password: ALTESPASSWORT&lt;br /&gt;
&lt;br /&gt;
Enter new UNIX password: NEUESPASSWORT&lt;br /&gt;
&lt;br /&gt;
Retype new UNIX password: NEUESPASSWORT&lt;br /&gt;
&lt;br /&gt;
passwd: password updated successfully&lt;br /&gt;
&lt;br /&gt;
xyz00@hopi:~$ █&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Platzhalter &#039;&#039;&#039;NEUESPASSWORT&#039;&#039;&#039; und &#039;&#039;&#039;ALTESPASSWORT&#039;&#039;&#039; müssen dabei selbstverständlich gegen die entsprechenden [[Passworte]] ausgetauscht werden. Dabei sollte jedes Passwort mindestens 6 Zeichen lang sein, besser 8 Zeichen, und aus Buchstaben, Ziffern und ggf. Sonderzeichen bestehen. Allerdings sollte auf Umlaute verzichtet werden, da diese je nach verwendetem Zugangsweg nicht verwendet werden könnten. &lt;br /&gt;
&lt;br /&gt;
Ggf. kommt es zu Fehlermeldungen, z.B. wenn das neue [[Passwort]] zu simpel ist, oder bei der Wiederholung nicht identisch mit dem ersten Passwort ist. In dem Fall, den Vorgang einfach wiederholen. Solange das neue Passwort nicht erfolgreich übernommen wurde, bleibt das alte gültig. &lt;br /&gt;
&lt;br /&gt;
Es gibt User, denen der Paket-Admin nur das Recht eingeräumt hat, das eigene Passwort zu ändern, indem er ihnen die &amp;quot;Shell&amp;quot; /usr/bin/passwd zugewiesen hat. Diese User können durch einen Shell-Login nur ihr Passwort ändern, da das Programm passwd an Stelle einer Shell gestartet wird. Sie werden nach dem Einloggen automatisch auf diesen Dialog geführt.Mehr dazu unter [[User#Rechte]].&lt;br /&gt;
&lt;br /&gt;
==Sitzung beenden==&lt;br /&gt;
&lt;br /&gt;
Um die Sitzung zu beenden, sich also auszuloggen, gibt man exit ein. Das sieht dann so aus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hopi:~$ exit &lt;br /&gt;
logout &lt;br /&gt;
Connection to xyz00.hostsharing.net closed.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Login ohne Passwort ==&lt;br /&gt;
Um logins durch automatisierte Versuche zu erschweren sind auf den shared hosts Mechanismen in Betrieb, die ein Login mit Passwort erschweren, zum Beispiel durch ein Timeout, dass die Eingabe eines Passworts, wenn sie zu lange dauert, nicht funktioniert.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
(xyz00@xyz00.hostsharing.net) Password:&lt;br /&gt;
Connection closed by 2a01:37:1000::53df:4f85:0 port 22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Man muss also das Passwort in der Zwischenablage haben, dann den Loginbefehl geben und dann sofort das Passwort eingeben. Das ist in vielerlei hinsicht unsicher, da die Zwischenablage evtl gespeichert wird. (ein passwort Manager wie keepassXC löscht die eigenen Abgelegten Werte per Default nach einigen Sekunden), diese Methode, weil es wirklich schnell gehen muss (wenige Sekunden zur Passworteingabe) kann auch zu anderen Fehler führen die dass Passwort offenlegen, z.B. weil es versehentlich in der Hektik in ein falsches Fenster gepostet wird. &lt;br /&gt;
Auch aus anderen Gründen sollte daher der Zugang über SSH mit einem Schlüsselpaar erfolgen.&lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
== Bestimmte Shell Kommandos automatisch ausführen ==&lt;br /&gt;
&lt;br /&gt;
Lege in dem Verzeichnis, in dem Du direkt nach dem Login landest, mit dem Editor Deiner Wahl die Datei .bash_profile mit folgendem Inhalt an:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
# Get the aliases and functions&lt;br /&gt;
if [ -f ~/.bashrc ]; then&lt;br /&gt;
. ~/.bashrc&lt;br /&gt;
fi&lt;br /&gt;
# User specific environment and startup programs&lt;br /&gt;
PATH=$PATH:$HOME/bin&lt;br /&gt;
BASH_ENV=$HOME/.bashrc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und nun kannst du in der Datei .bashrc shell Kommandos eingeben. z.B.: quota -g&lt;br /&gt;
&lt;br /&gt;
== welcher Editor in der shell ==&lt;br /&gt;
&lt;br /&gt;
1. manuell Einloggen und:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
VISUAL=nano&lt;br /&gt;
export VISUAL&lt;br /&gt;
EDITOR=nano&lt;br /&gt;
export EDITOR&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. in der bash geht es auch kürzer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export EDITOR=nano&lt;br /&gt;
export VISUAL=nano&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. automatisch bei jedem Login&lt;br /&gt;
Mit obigen Kommandos in der ~/.bash_profile-Datei.&lt;br /&gt;
&lt;br /&gt;
==Weiterführende Links==&lt;br /&gt;
&lt;br /&gt;
[[HS-Server:SSH-Hostkeys]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Einstieg bei Hostsharing]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7271</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7271"/>
		<updated>2025-02-12T19:27:34Z</updated>

		<summary type="html">&lt;p&gt;Dge00: korrigiert formatierung aus &amp;lt;pre&amp;gt; tags entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.3, 8.2, 8.1, 8.0 und 7.4 unterstützt. (CAVE: Stand Januar 2025 sind 7.4 und 8.0 End of life und sollten nicht in Produktivumgebungen genutzt werden: https://www.php.net/supported-versions.php )&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 und 8.3 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.3 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.3 statt /usr/bin/php (Stand 19. Januar 2025 verlinkt mit php8.2) aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.3&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.3 zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php8.2 (Stand 19.01.2025)&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.3 /home/doms/example.com/app/php8.3/php&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.3:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/pacs/xyz00/users/abc/doms/example.com/app/php8.3:$PATH&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.3:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.3/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7235</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7235"/>
		<updated>2025-01-25T20:39:59Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Drupal konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
&lt;br /&gt;
Stand Januar 2025 ist die Version auf den Hives php 8.2, allerdings kann php 8.3  für die Webseite ausgewählt werden. Das Problem ist, dass die cli Version durch diese Auswahl nicht geändert wird, also composer noch die Version 8.2 nutzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupalcms xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupalcms.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7234</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7234"/>
		<updated>2025-01-25T20:18:00Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Drupal konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
&lt;br /&gt;
Stand Januar 2025 ist die Version auf den Hives php 8.2, allerdings kann php 8.3  für die Webseite ausgewählt werden. Das Problem ist, dass die cli Version durch diese Auswahl nicht geändert wird, also composer noch die Version 8.2 nutzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupalcms xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupalcms.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7233</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7233"/>
		<updated>2025-01-25T20:17:32Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Mit Composer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
&lt;br /&gt;
Stand Januar 2025 ist die Version auf den Hives php 8.2, allerdings kann php 8.3  für die Webseite ausgewählt werden. Das Problem ist, dass die cli Version durch diese Auswahl nicht geändert wird, also composer noch die Version 8.2 nutzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupalcms xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer -V&lt;br /&gt;
Composer version 2.8.5 2025-01-21 15:23:40&lt;br /&gt;
PHP version 8.3.16 (/usr/bin/php8.3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7232</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7232"/>
		<updated>2025-01-25T20:13:33Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Vorbereitungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
&lt;br /&gt;
Stand Januar 2025 ist die Version auf den Hives php 8.2, allerdings kann php 8.3  für die Webseite ausgewählt werden. Das Problem ist, dass die cli Version durch diese Auswahl nicht geändert wird, also composer noch die Version 8.2 nutzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupalcms xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer self-update&lt;br /&gt;
You are already using the latest available Composer version 2.8.5 (stable channel).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7231</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7231"/>
		<updated>2025-01-25T20:11:50Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Drupal installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21 allerdings kann php8.3 ausgewählt werden für die Webseite. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupalcms xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer self-update&lt;br /&gt;
You are already using the latest available Composer version 2.8.5 (stable channel).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7230</id>
		<title>Drupal-cms installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal-cms_installieren&amp;diff=7230"/>
		<updated>2025-01-25T20:10:37Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Erstellung auf Basis der Drupal installation mit Anpassung an das CMS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
drupal/cms (1.0.1) ist ein Content Management System auf der Basis von Drupal, es ist eine Anpassung von Drupal speziell als CMS und mit Version 1.0.1 am 15.01.2025 öffentlich geworden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[drupal installieren]]&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupalcms.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupalcms&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupalcms.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupalcmsuser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupalcmsdb&#039;,owner:&#039;xyz00_drupalcmsuser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal cms 1.0.1 basiert auf drupal/core 11.1.1 und braucht mindestens php 8.3&lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21 allerdings kann php8.3 ausgewählt werden für die Webseite. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupalcms&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Januar 2025 ist die Composer Version auf den Hives ausreichend für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann allerdings schnell zu alt für updates sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ diese local installierte Version ist dann durch composer --self-update aktualisierbar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer self-update&lt;br /&gt;
You are already using the latest available Composer version 2.8.5 (stable channel).&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupalcms.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/cms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/cms/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /home/doms/drupalcms.hs-example.de/var&lt;br /&gt;
rmdir ../subs-ssl/www&lt;br /&gt;
ln -s cms/web ../subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupalcms.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=7229</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=7229"/>
		<updated>2025-01-25T19:54:31Z</updated>

		<summary type="html">&lt;p&gt;Dge00: drupal cms installieren&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7. Siehe auch [[drupal-cms installieren]]&lt;br /&gt;
&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 &lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21&lt;br /&gt;
das kann überprüft werden mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Juli 2024 ist die Composer Version auf den Hives perfekt für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/recommended-project drupal10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal10/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir subs-ssl/www&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupal.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7227</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7227"/>
		<updated>2025-01-18T23:15:00Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Alternative: PATH Variable setzen */ PATH Alternative mit /home/pacs... angegeben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.3, 8.2, 8.1, 8.0 und 7.4 unterstützt. (CAVE: Stand Januar 2025 sind 7.4 und 8.0 End of life und sollten nicht in Produktivumgebungen genutzt werden: https://www.php.net/supported-versions.php )&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 und 8.3 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.3 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.3 statt /usr/bin/php (Stand 19. Januar 2025 verlinkt mit php8.2) aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.3&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.3 zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php8.2 (Stand 19.01.2025)&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.3 /home/doms/example.com/app/php8.3/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.3:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/pacs/xyz00/users/abc/doms/example.com/app/php8.3:$PATH&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.3&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.3/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7226</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7226"/>
		<updated>2025-01-18T23:08:47Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* PHP 8.3 für ssh-Zugang per Shell aktivieren */ Aktuelle Standard php = 8.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.3, 8.2, 8.1, 8.0 und 7.4 unterstützt. (CAVE: Stand Januar 2025 sind 7.4 und 8.0 End of life und sollten nicht in Produktivumgebungen genutzt werden: https://www.php.net/supported-versions.php )&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 und 8.3 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.3 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.3 statt /usr/bin/php (Stand 19. Januar 2025 verlinkt mit php8.2) aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.3&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.3 zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php8.2 (Stand 19.01.2025)&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.3 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.3:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7225</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7225"/>
		<updated>2025-01-18T22:57:58Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Vorinstallierte PHP Version wechseln */ php8.2 durch 8.3 ersetzt im Text, aktuelle Verlinkung und End of life ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.3, 8.2, 8.1, 8.0 und 7.4 unterstützt. (CAVE: Stand Januar 2025 sind 7.4 und 8.0 End of life und sollten nicht in Produktivumgebungen genutzt werden: https://www.php.net/supported-versions.php )&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 und 8.3 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.3 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.3 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.3&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.3 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.3 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.3:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7224</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=7224"/>
		<updated>2025-01-18T22:42:49Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.3, 8.2, 8.1, 8.0 und 7.4 unterstützt. (CAVE: Stand Januar 2025 sind 7.4 und 8.0 End of life und sollten nicht in Produktivumgebungen genutzt werden: https://www.php.net/supported-versions.php )&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini line&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mlmmj&amp;diff=7192</id>
		<title>Mlmmj</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mlmmj&amp;diff=7192"/>
		<updated>2024-12-27T21:53:36Z</updated>

		<summary type="html">&lt;p&gt;Dge00: ja, receive schreibt  sich mit ei, man kann das auch gleich richtig schreiben und dem symlink eine Pause gönnen, oder hat das eine bessere Performance, das durch einen Symlink zu leiten?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.mlmmj.org/ mlmmj], angeblich eine Abkürzung für &amp;quot;Mailing List Management Made Joyful&amp;quot;, ist ein Programm, mit dem in einem Hostsharing Paket E-Mail-Verteiler realisiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Wer noch nicht weiß, was ein E-Mail-Verteiler machen soll oder wie, lese vielleicht auch den Wikipedia-Artikel:&lt;br /&gt;
[http://de.wikipedia.org/wiki/Mailingliste Mailingliste]&lt;br /&gt;
&lt;br /&gt;
Eine leistungsfähigere Alternative zu mlmmj könnte [[Mailman_3_installieren|Mailman 3]] sein.&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt die Einrichtung einer Mailingliste für eine Domain in einem Hostsharing-Webspace.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen  ==&lt;br /&gt;
&lt;br /&gt;
Das Debian Paket [http://packages.debian.org/search?keywords=mlmmj mlmmj] ist auf den Shared-Hosting-Servern bereits installiert. (Wer die Software selbst kompilieren möchte kann aktuellen Source-Code bei [https://codeberg.org/mlmmj/mlmmj codeberg.org] finden.)&lt;br /&gt;
&lt;br /&gt;
Für den Betrieb der Mailingliste empfiehlt sich das Anlegen eines eigenen Users für diesen Zweck mit hsadmin.&lt;br /&gt;
&lt;br /&gt;
In dieser Anleitung heißt das Paket &#039;&#039;xyz00&#039;&#039; und der für Mailinglisten eingesetzte User &#039;&#039;xyz00-list&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die E-Mail-Adresse der einzurichtende Mailing-Liste soll &#039;&#039;discuss@example.org&#039;&#039; sein. Den lokalen Teil dieser Adresse, &#039;&#039;discuss&#039;&#039;, ist der Listenname. Der Listenname darf auf keinen Fall das Plus-Zeichen (+) enthalten, weil dies ein Sonderbedeutung für die Listensteuerung hat: &#039;&#039;mlmmj&#039;&#039; wird nämlich Befehle der Abonnenten über erweiterte Adressen annehmen, wie z.B. &#039;&#039;discuss+help@example.org&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Domain &#039;&#039;example.org&#039;&#039; muss dazu bei einem beliebigen User im Paket &#039;&#039;xyz00&#039;&#039; [[aufgeschaltet]] sein. (&amp;quot;Aufgeschaltet&amp;quot; bedeutet, daß diese Domain bei Hostsharing gehostet wird und der Domainname als Verzeichnis /home/pacs/xyz00/*User*/doms/example.org/ erscheint.)&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Ich melde mich über SSH auf der Hostsharing-Console als der Paketuser &#039;&#039;xyz00&#039;&#039; an.&lt;br /&gt;
&lt;br /&gt;
Im Shell kann ich dann durch den Befehl &#039;&#039;hsscript -i&#039;&#039; das Verwaltungswerkzeug [[hsadmin]] interaktiv ausführen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@h03:~$ hsscript -i&lt;br /&gt;
Password: *************&lt;br /&gt;
xyz00@hsadmin&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039; werden User und E-Mail-Adresse angelegt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-list&#039;,comment:&#039;Mailingliste Discuss&#039;,shell:&#039;/bin/bash&#039;,password:&#039;geheimnis&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; emailaddress.add({set:{target:&#039;xyz00-list&#039;,localpart:&#039;discuss&#039;,domain:&#039;example.org&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; bye&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dem Parameter &amp;quot;target&amp;quot; wird die für diese Adresse eingehende Post zunächst in das Postfach des Users xyz00-list abgelegt.&lt;br /&gt;
&lt;br /&gt;
Für den User xyz00-list lege ich in seinem Heimat-Verzeichnis das Unterverzeichnis &amp;lt;tt&amp;gt;mlmmj&amp;lt;/tt&amp;gt; an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mkdir /home/pacs/xyz00/users/list/mlmmj&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann lege ich die Mailingliste mit folgendem Kommando an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
mlmmj-make-ml -L discuss -s /home/pacs/xyz00/users/list/mlmmj&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Skript &#039;&#039;mlmmj-make-ml&#039;&#039; fragt weitere Parameter der Mailingliste ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output line&amp;gt;&lt;br /&gt;
The Domain for the List? [] : example.org&lt;br /&gt;
The emailaddress of the list owner? [postmaster] : webmaster@example.org&lt;br /&gt;
For the list texts you can choose between the following languages or&lt;br /&gt;
give an absolute path to a directory containing the texts.&lt;br /&gt;
Available languages:&lt;br /&gt;
cz  da	de  en	es  fr	it  nl	ru&lt;br /&gt;
The path to texts for the list? [en] : de&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das skript &#039;&#039;mlmmj-make-ml&#039;&#039; legt daraufhin unter &amp;quot;/home/pacs/xyz00/users/list/mlmmj&amp;quot; ein Verzeichnis &amp;quot;discuss&amp;quot; an, das die Datenstruktur zur Verwaltung der Mailingliste enthält.&lt;br /&gt;
&lt;br /&gt;
Weitere Konfigurationen der Liste erfolgen durch das Anlegen von Dateien im&lt;br /&gt;
Verzeichnis &amp;quot;/home/pacs/xyz00/users/list/mlmmj/discuss/control&amp;quot;.&lt;br /&gt;
Die Konfigurationsmöglichkeiten finden Sie auf der [http://mlmmj.org/TUNABLES.html Internetseite von mlmmj].&lt;br /&gt;
&lt;br /&gt;
Damit mlmmj die Verteilung der Post übernimmt, muß ich im Heimat-Verzeichnis des users xyz00-list die Datei &amp;lt;tt&amp;gt;.forward&amp;lt;/tt&amp;gt; mit folgenden Inhalt (INKLUSIVE der Anführungszeichen!) erstellen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
&amp;quot;|/usr/bin/mlmmj-receive -L /home/pacs/xyz00/users/list/mlmmj/discuss/&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Ja, &#039;&#039;receive&#039;&#039; schreibt sich mit &#039;&#039;-ei-&#039;&#039;, aber mlmmj hält einen symbolischen Link bereit für diejenigen, die in englischer Rechtschreibung unsicher sind:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
xyz00-list@h03:~$ ls -la /usr/bin/mlmmj-rec*&lt;br /&gt;
-rwxr-xr-x 1 root root 27104 Sep 25  2018 /usr/bin/mlmmj-receive&lt;br /&gt;
lrwxrwxrwx 1 root root    13 Sep 25  2018 /usr/bin/mlmmj-recieve -&amp;gt; mlmmj-receive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;tt&amp;gt;.forward&amp;lt;/tt&amp;gt;-Datei sorgt dafür, dass eingehende E-Mails an das User-Postfach an das Programm &#039;&#039;mlmmj-recieve&#039;&#039; übergeben werden.&lt;br /&gt;
&lt;br /&gt;
Für regelmäßige Aufgaben der Listen-Managers definiere ich den systemd timer wie folgt (immer noch als &#039;&#039;xyz00-list&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/mlmmj.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=mlmmj maintenance&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/mlmmj-maintd -d /home/pacs/xyz00/users/list/mlmmj -F&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
~/.config/systemd/user/mlmmj.timer&lt;br /&gt;
&amp;lt;syntaxhighlight lang=ini&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=mlmmj maintenance&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*/4:28&lt;br /&gt;
Persistent=True&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Timer aktivieren und starten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ systemctl --user enable mlmmj.timer&lt;br /&gt;
$ systemctl --user start mlmmj.timer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Schluss rufe ich das Skript mlmmj-sub auf, um die E-Mail-Adressen der gewünschten Abonnenten des Verteilers einzutragen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
/usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a klaus.muster@gmx.de -c &lt;br /&gt;
/usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a sabine.beispiel@arcor.de -c &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei bewirkt &amp;quot;-c&amp;quot;, dass der Abonnent eine Begrüßungs-Nachricht erhält. Alternativ kann man &amp;quot;-C&amp;quot; (großes C) angeben: dann muss der Abonnent das Abo durch Antworten auf die Nachricht bestätigen.&lt;br /&gt;
&lt;br /&gt;
== weitere Optionen  ==&lt;br /&gt;
&lt;br /&gt;
Noch ein paar Dinge, die Sie möglicherweise einstellen wollen:&lt;br /&gt;
&lt;br /&gt;
Ein Prefix in der Betreffzeile setzen, z.B.: &amp;quot;[discuss]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
echo &amp;quot;[discuss]&amp;quot; &amp;gt; /home/pacs/xyz00/users/list/mlmmj/discuss/control/prefix&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Liste nur E-Mails von eingetragenen Abonnenten weiterleiten soll:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/subonlypost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit der Listen-Owner weitere Abonnements bestätigen muss:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/submod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einen &amp;quot;Reply-To:&amp;quot;-Header setzen, damit Antwort-Mails standardmäßig an die Mailing-Liste gehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
echo &amp;quot;Reply-To:&amp;quot; &amp;gt; /home/pacs/xyz00/users/list/mlmmj/discuss/control/delheaders&lt;br /&gt;
echo &amp;quot;Reply-To: discuss@example.org&amp;quot; &amp;gt; /home/pacs/xyz00/users/list/mlmmj/discuss/control/customheaders&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Massenversand, z.B. bei Newslettern, nutzen Sie bitte möglichst den dedizierten Postausgangsserver für den Massenversand. Dadurch tragen Sie dazu bei, die Reputation unserer regulären Ausgangsserver aufrechtzuerhalten.&lt;br /&gt;
&lt;br /&gt;
Um dies zu tun, setzen Sie den SMTP-Port entsprechend:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
echo &amp;quot;4025&amp;quot; &amp;gt; /home/pacs/xyz00/users/list/mlmmj/discuss/control/smtpport&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Konfigurationsvariante des Ausgangsserver sind unter https://www.hostsharing.net/doc/managed-operations-platform/email/ zu finden.&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten finden Sie (wie oben bereits angegeben) &lt;br /&gt;
auf der [http://mlmmj.org/docs/tunables/ Internetseite von mlmmj].&lt;br /&gt;
&lt;br /&gt;
=== Achtung: DKIM ===&lt;br /&gt;
&lt;br /&gt;
Mlmmj gibt die Möglichkeit, mit &#039;&#039;&#039;delheaders&#039;&#039;&#039; und &#039;&#039;&#039;customheaders&#039;&#039;&#039; die Header der durchgeleiteten Mail umfangreich zu ändern. Allerdings tragen Mails heute häufig kryptografische Signaturen der sendenden Mailserver. Eine DKIM-Signatur sichert damit in der Regel die Integrität des Body der Mail sowie der Header &#039;&#039;Subject:&#039;&#039;, &#039;&#039;From:&#039;&#039;, &#039;&#039;To:&#039;&#039;, &#039;&#039;Date:&#039;&#039;, &#039;&#039;From&#039;&#039;, und oft auch &#039;&#039;Reply-To:&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wird zum Beispiel mit einem Prefix das Subject geändert oder ein Footer angehängt, macht dies die DKIM-Signatur ungültig. Das ist für viele Mailprovider ein Grund die Nachricht abzuweisen. (siehe auch Diskussions-Seite zum Artikel)&lt;br /&gt;
&lt;br /&gt;
== Zur Konfiguration im Browser ==&lt;br /&gt;
&lt;br /&gt;
Die Original-Distribution von &#039;&#039;mlmmj&#039;&#039; enthält ein paar einfache PHP- und Perl-Skripte.  Das sind Beispiele für Subscribe-/Unsubscribe-Formulare, ein Admin-Formular zum Eintragen und Löschen von Abonnements und eine Seite mit der gesamten Listen-Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Wer es sich ansehen möchte:&lt;br /&gt;
&lt;br /&gt;
Als Paket-Admin eine Domain aufschalten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -e &amp;quot;domain.add({set:{name:&#039;lists.example.org&#039;,user:&#039;xyz00-list&#039;}})&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Und weiter als &amp;quot;xyz00-list&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Download der neuesten Version der Sourcen von mlmmj von http://mlmmj.org/downloads/ (noch besser: Download des aktuellen Debian-Pakets von [https://packages.debian.org/bookworm/all/mlmmj-php-web-admin/download debian.org]: da sind einige veraltete PHP-Ausdrücke schon herausgepatcht) und diese in einem temporären Verzeichnis entpacken (mit tar oder dpkg-deb).&lt;br /&gt;
&lt;br /&gt;
Unter &amp;quot;/mlmmj-$versionsnummer/contrib/web/php-admin/&amp;quot;, oder beim .deb-Paket unter &amp;quot;usr/share/mlmmj-...&amp;quot;, findet sich die PHP-Admin-Anwendung. Also ...&lt;br /&gt;
&lt;br /&gt;
* den Inhalt diese Verzeichnisses nach &amp;quot;/home/pacs/xyz00/users/list/doms/lists.example.org/&amp;quot; packen;&lt;br /&gt;
* in &amp;quot;/home/pacs/xyz00/users/list/doms/lists.example.org/conf/config.php&amp;quot; die Variable &amp;quot;$topdir&amp;quot; anpassen;&lt;br /&gt;
* die Dateien aus &amp;quot;/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs/&amp;quot; nach &amp;quot;/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs-ssl/&amp;quot; verschieben;&lt;br /&gt;
* Beim .deb-Paket die config.php, die templates/ und die tunables.pl aus etc/ nach example.org/conf/ verschieben;&lt;br /&gt;
* in &amp;quot;/home/pacs/xyz00/users/list/mlmmj&amp;quot; und in &amp;quot;/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs-ssl/&amp;quot; eine &amp;quot;.htaccess&amp;quot; mit folgendem Inhalt ablegen: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=apache line&amp;gt;&lt;br /&gt;
Require valid-user&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;mlmmj web-interface&amp;quot;&lt;br /&gt;
AuthUserFile /home/pacs/xyz00/users/list/doms/lists.example.org/etc/htpasswd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Und schließlich die &amp;quot;htpasswd&amp;quot;-Datei anlegen.&lt;br /&gt;
&lt;br /&gt;
 cd /home/pacs/xyz00/users/list/doms/lists.example.org/etc/&lt;br /&gt;
 htpasswd -c htpasswd listadmin&lt;br /&gt;
&lt;br /&gt;
* Ein Passwort angeben.&lt;br /&gt;
&lt;br /&gt;
Nun enthält diese PHP-Anwendung, wenn man sie nicht dem Debian-Paket entnommen hat, leider noch eine Zeile, die schon seit PHP 7 nicht mehr lauffähig ist. Also muß man noch&lt;br /&gt;
&lt;br /&gt;
* in &amp;lt;tt&amp;gt;.../htdocs-ssl/index.php&amp;lt;/tt&amp;gt; folgende Änderung vornehmen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=diff line&amp;gt;&lt;br /&gt;
@@ -38,4 +38,5 @@&lt;br /&gt;
 # use scandir to have alphabetical order &lt;br /&gt;
 foreach (scandir($topdir) as $file) {&lt;br /&gt;
-    if (!ereg(&amp;quot;^\.&amp;quot;,$file))&lt;br /&gt;
+# ereg obsolete!! Vormals:    if (!ereg(&amp;quot;^\.&amp;quot;,$file))&lt;br /&gt;
+    if (!preg_match(&#039;/^\./&#039;,$file))&lt;br /&gt;
     {&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und das Ergebnis auf https://lists.example.org anschauen.&lt;br /&gt;
&lt;br /&gt;
== Mehrere Mailinglisten betreiben ==&lt;br /&gt;
&lt;br /&gt;
Wenn mehrere Mailinglisten in einem Account und mit einer Admin-Oberfläche betrieben werden soll, empfiehlt sich die Nutzung von Procmail für den Aufruf von &#039;&#039;mlmmj&#039;&#039; für die jeweiligen Liste mit ihrem Daten-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Dazu trägt man in der Datei &amp;lt;tt&amp;gt;.forward&amp;lt;/tt&amp;gt; statt des Aufrufs von &#039;&#039;mlmmj-recieve&#039;&#039; einen Aufruf von &#039;&#039;procmail&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
|/usr/bin/procmail&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration von Procmail kann generisch erfolgen. Dazu legt man eine Datei &amp;lt;tt&amp;gt;.procmailrc&amp;lt;/tt&amp;gt; mit folgendem Inhalt ins $HOME des Users:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
SHELL=/bin/sh&lt;br /&gt;
HOMEDIR=/home/pacs/xyz00/users/list&lt;br /&gt;
MAILDIR=/home/pacs/xyz00/users/list/Maildir&lt;br /&gt;
PMDIR=/home/pacs/xyz00/users/list&lt;br /&gt;
VERBOSE=yes&lt;br /&gt;
LOGFILE=/home/pacs/xyz00/users/list/var/procmail.log&lt;br /&gt;
DEFAULT&lt;br /&gt;
 &lt;br /&gt;
:0:&lt;br /&gt;
* ^X-Original-To: ()\/[^@+]+&lt;br /&gt;
|/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/${MATCH}/&lt;br /&gt;
 &lt;br /&gt;
:0&lt;br /&gt;
{ EXITCODE 67 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte dafür sorgen, dass das Verzeichnis &#039;&#039;/home/pacs/xyz00/users/list/var&#039;&#039; existiert.&lt;br /&gt;
&lt;br /&gt;
Der kryptische reguläre Ausdruck hinter dem Header &#039;&#039;X-Original-To:&#039;&#039; passt auf den Beginn der E-Mail-Adresse bis zum ersten &#039;&#039;@&#039;&#039;- oder &#039;&#039;+&#039;&#039;-Zeichen. In der Variable &#039;&#039;MATCH&#039;&#039; steht also der Name der Mailingliste, d.h. der Name der Verzeichnisses, in dem die Liste verwaltet wird.&lt;br /&gt;
&lt;br /&gt;
Sehr wichtig ist die Zeile &#039;&#039;DEFAULT&#039;&#039; zu Beginn der &#039;&#039;.procmailrc&#039;&#039;. Die Variable &#039;&#039;DEFAULT&#039;&#039; wird von &#039;&#039;procmail&#039;&#039; gesetzt. Wir sorgen mit dieser Zeile dafür, dass sie wieder undefiniert ist. Diese Variable wird intern von &#039;&#039;mlmmj&#039;&#039; benutzt, wenn sie gesetzt ist. Das führt in Kombination mit &#039;&#039;procmail&#039;&#039; zu Fehlfunktionen (vgl. Links).&lt;br /&gt;
&lt;br /&gt;
===Groß- und Kleinschreibung===&lt;br /&gt;
&lt;br /&gt;
Achtung, mit der Groß- und Kleinschreibung von Listennamen gibt es bei dieser Procmail-Lösung eine kleine Tücke. Procmail übernimmt in die Variable $MATCH genau die in der X-Original-To-Headerzeile vorgefundene Schreibweise, und diese kann denkbarerweise &amp;quot;Listen-Name&amp;quot; oder &amp;quot;listen-name&amp;quot; oder &amp;quot;Listen-name&amp;quot; sein. &amp;lt;tt&amp;gt;mlmmj&amp;lt;/tt&amp;gt; hingegen wird diesen Wert in Unix-Manier mit dem genauen Verzeichnisnamen &amp;lt;tt&amp;gt;${HOME}/mlmmj/listen-name&amp;lt;/tt&amp;gt; vergleichen, und bei unterschiedlicher Schreibweise die Mail nicht verteilen.&lt;br /&gt;
&lt;br /&gt;
====Lösung 1====&lt;br /&gt;
&lt;br /&gt;
Eine teilweise Lösung besteht darin, den Listennamen in dem &amp;lt;tt&amp;gt;mlmmj&amp;lt;/tt&amp;gt;-Aufruf in der &amp;lt;tt&amp;gt;.procmailrc&amp;lt;/tt&amp;gt; in Kleinbuchstaben umzuschreiben. Dann lautet das Rezept so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
:0:&lt;br /&gt;
* ^X-Original-To: ()\/[^@+]+&lt;br /&gt;
|/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/$(echo ${MATCH} | tr [:upper:] [:lower:])/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Rest der Datei muß gleich bleiben, wie weiter oben angezeigt.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall müssen aber alle Mailing-Listen ohne Großbuchstaben im Namen angelegt werden!&lt;br /&gt;
&lt;br /&gt;
(Man kann auch in &amp;lt;tt&amp;gt;${HOME}/mlmmj/&amp;lt;/tt&amp;gt; durch kleingeschriebene Symlinks großgeschriebene Listennamen ansprechbar machen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=output&amp;gt;&lt;br /&gt;
xyz00-list@h02:~$ ls -lA mlmmj/&lt;br /&gt;
total 8&lt;br /&gt;
-rw-r--r--  1 xyz00-list xyz00  148 Feb  1 16:56 .htaccess&lt;br /&gt;
lrwxrwxrwx  1 xyz00-list xyz00   10 Feb  2 18:01 mitglieder -&amp;gt; Mitglieder&lt;br /&gt;
drwxr-xr-x 15 xyz00-list xyz00 4096 Feb  2 16:53 Mitglieder&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lösung 2====&lt;br /&gt;
&lt;br /&gt;
Bash kann bei der Auflösung von Variablen die Groß- und Kleinschreibung manipulieren. (Siehe dazu bei der Zeichenfolge &amp;lt;tt&amp;gt;,,&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;man bash&amp;lt;/tt&amp;gt;.) Dann ist &amp;lt;tt&amp;gt;$(echo ${MATCH} | tr [:upper:] [:lower:])&amp;lt;/tt&amp;gt; gleichbedeutend mit &amp;lt;tt&amp;gt;${MATCH,,}&amp;lt;/tt&amp;gt;. Allerdings braucht procmail einige Überredung, um Bash zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
SHELL=/bin/bash&lt;br /&gt;
SHELLMETAS=&amp;amp;|&amp;lt;&amp;gt;~;?*[{&lt;br /&gt;
HOMEDIR= ...&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
:0:&lt;br /&gt;
* ^X-Original-To: ()\/[^@+]+&lt;br /&gt;
|/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/${MATCH,,}/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Tücke ist, daß procmail den in SHELL angegebenen Shell nur dann verwendet, wenn die Befehlszeile eines der in SHELLMETAS angegebenen Zeichen enthält. Und das &#039;|&#039; am Anfang der Zeile zählt dabei nicht! In diesem Beispiel ist es das Zeichen &amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;, das den Einsatz von Bash auslöst.&lt;br /&gt;
&lt;br /&gt;
Beide Lösungen scheinen zu funktionieren; Angabe ohne Gewähr.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* http://mlmmj.org/ Projektseite&lt;br /&gt;
* https://codeberg.org/mlmmj mlmmj auf Codeberg&lt;br /&gt;
* https://github.com/tchapi/mlmmj-simple-web-interface ein Admin-Interface in NodeJS&lt;br /&gt;
* [https://web.archive.org/web/20221228110514/https://www.tablix.org/~avian/blog/archives/2010/04/the_faulty_default/ https://www.tablix.org/~avian/blog/archives/2010/04/the_faulty_default/ (via web.archive.org)] Nutzung von mlmmj in Verbindung mit Procmail&lt;br /&gt;
* [https://gist.github.com/kboss/7c9593f0fd9219406226c4f11256b98a Einfaches Python-Script zum Massenimport aus einem Texfile.] Geht bestimmt auch eleganter mit purem Bash&lt;br /&gt;
* Ein Self-Service zum Subscriben/Unsubscriben lässt sich in Form von Mail-to-Links in Webseiten einbinden. Beispiele gibt es bei Hostsharing für die öffentlichen &amp;quot;public&amp;quot;-Mailinglisten: https://www.hostsharing.net/lists/public-discussion/ . Alternativ auf https://github.com/hblasum/mlmmj-php-web-simplified ein Webfrontend mit dem sich Benutzerinnen und Benutzer selbst ein-/austragen können (Vereinfachung von mlmmj-php-web von Christoph Thiel).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Mailinglisten]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailclient_einrichten&amp;diff=6948</id>
		<title>Mailclient einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailclient_einrichten&amp;diff=6948"/>
		<updated>2024-09-16T15:08:06Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Baustelle}}&lt;br /&gt;
== Aktuelles ==&lt;br /&gt;
Aktuelle Informationen finden sich auf: https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
== Autoconfig ==&lt;br /&gt;
Da für die meisten Mail Clients (insbesonder für Thunderbird) die von Mozilla Thunderbird autoconfig wirksam ist, muss lediglich  im HS Admin das Häkchen für Autoconfig gesetzt werden.&lt;br /&gt;
[[Bild:Screenshot-HS-Admin-Domain-E-Mail-Konfiguration.png|thumb|Screenshot-HS-Admin-Domain-E-Mail-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
Thunderbird und auch viele andere Mail-Clients (wie z.B. Fair-Email für Android) können die Autoconfig Datei dann auslesen und bekommen die unten stehenden Dinge automatisch, hierbei kann das eingegebene Passwort zum Einloggen genutzt und  gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Posteingangsserver ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot-thunderbird-pop-server.png|thumb|Einstellungsdialog von Thunderbird 2]]&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf das Postfach ist über POP3 oder IMAP möglich. Für den Zugriff muss der Mailclient wie folgt konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
; Server : &#039;&#039;xyz00&#039;&#039;.hostsharing.net, dabei ist &#039;&#039;xyz00&#039;&#039; durch den   Namen des Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
; Benutzername : Der Name des Benutzers, auf dessen Postfach   zugegriffen werden soll, zum Beispiel xyz00-mustermann.&lt;br /&gt;
&lt;br /&gt;
; Sicherheit : Es ist eine verschlüsselte Verbindung (SSL) zu wählen. Der Port des Servers lautet 995 für POP3 oder 993 für IMAP.&lt;br /&gt;
&lt;br /&gt;
== Postausgangsserver ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot-thunderbird-smtp-server.png|thumb|Einstellungsdialog von Thunderbird 2]]&lt;br /&gt;
&lt;br /&gt;
Um E-Mails mit dem Mailclient über Hostsharing senden zu können, muss der Paketserver als Postausgangsserver eingerichtet werden. Dabei muss die Benutzerauthentifizierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
; Server : &#039;&#039;xyz00&#039;&#039;.hostsharing.net, dabei ist &#039;&#039;xyz00&#039;&#039; durch den Namen des Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
; Benutzername : Der Name eines Benutzers auf dem Paketserver. In der Regel derselbe Name wie für den Posteingangsserver.&lt;br /&gt;
&lt;br /&gt;
; Sicherheit : Wie beim Empfang ist auch hier eine SSL-verschlüsselte Verbindung zu wählen. Der Serverport lautet 465.&lt;br /&gt;
&lt;br /&gt;
== Sicherheitshinweis ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; viele Mailclients richten beim Erstellen eines neuen Kontos über einen Assistenten dieses standardmäßig so ein, dass die Verschlüsselung ausgeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
== Für die Kommandozeilen-Fetischisten ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Rezept zum Verschicken von Mails mit [http://msmtp.sourceforge.net msmtp] (in ~/.msmtprc kopieren):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;procfile&amp;quot; line&amp;gt;&lt;br /&gt;
account default&lt;br /&gt;
host xyz00.hostsharing.net&lt;br /&gt;
auth plain&lt;br /&gt;
user xyz00&lt;br /&gt;
password ********&lt;br /&gt;
tls on&lt;br /&gt;
tls_starttls off&lt;br /&gt;
tls_trust_file /sw/etc/ssl/certs/ca-bundle.crt&lt;br /&gt;
from user@example.com&lt;br /&gt;
syslog LOG_MAIL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter MacOS X mit Fink muss man neben msmtp das Paket [http://pdb.finkproject.org/pdb/package.php/ca-bundle ca-bundle] installieren, unter Debian GNU/Linux das Paket [http://packages.debian.org/stable/ca-certificates ca-certificates]. Die Standard-Zertifikate landen dann in /sw/etc/ssl/certs/ca-bundle.crt (MacOS X mit Fink) bzw. /etc/ssl/certs/ca-certificates.crt (Debian GNU/Linux). Dementsprechend ist gegebenenfalls die &#039;&#039;tls_trust_file&#039;&#039; Option anzupassen.&lt;br /&gt;
&lt;br /&gt;
Das obige Rezept schickt die Mails über Port 465. Alternativ kann man sie auch über Port 25 einkippen, indem man die &#039;&#039;tls_starttls off&#039;&#039; Option entfernt; Nützlich, wenn man hinter einem Firewall sitzt, der Port 465 filtert.&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten einzelner Mailclients ==&lt;br /&gt;
&lt;br /&gt;
[[Mutt für Hostsharing konfigurieren]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Datei:Screenshot-HS-Admin-Domain-E-Mail-Konfiguration.png&amp;diff=6947</id>
		<title>Datei:Screenshot-HS-Admin-Domain-E-Mail-Konfiguration.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Datei:Screenshot-HS-Admin-Domain-E-Mail-Konfiguration.png&amp;diff=6947"/>
		<updated>2024-09-16T15:05:04Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Ein Ausschnitte der Hostsharing offizielle Dokumentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
Ein Ausschnitte der Hostsharing offizielle Dokumentation&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Mailclient_einrichten&amp;diff=6946</id>
		<title>Mailclient einrichten</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Mailclient_einrichten&amp;diff=6946"/>
		<updated>2024-09-16T14:42:22Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Baustelle}}&lt;br /&gt;
== Aktuelles ==&lt;br /&gt;
Aktuelle Informationen finden sich auf: https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
== Autoconfig ==&lt;br /&gt;
Da für die meisten Mail Clients (insbesonder für Thunderbird) die von Mozilla Thunderbird autoconfig wirksam ist, muss lediglich das Häkchen für Autoconfig gesetzt werden im HS Admin &lt;br /&gt;
[[Bild:https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/hsadmin-domain-bearbeiten_hub00ac60faa24c8c3efa694fa47189876_133721_1500x0_resize_q100_h2_catmullrom.webp|thumb|Screenshot-HS-Admin-Domain-E-Mail-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
Thunderbird und auch viele andere Mail-Clients (wie z.B. Fair-Email für Android) können die Autoconfig Datei dann auslesen und bekommen die unten stehenden Dinge automatisch, hierbei wird das eingegebene Passwort nur zum Einloggen genutzt und kann gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Posteingangsserver ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot-thunderbird-pop-server.png|thumb|Einstellungsdialog von Thunderbird 2]]&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf das Postfach ist über POP3 oder IMAP möglich. Für den Zugriff muss der Mailclient wie folgt konfiguriert werden:&lt;br /&gt;
&lt;br /&gt;
; Server : &#039;&#039;xyz00&#039;&#039;.hostsharing.net, dabei ist &#039;&#039;xyz00&#039;&#039; durch den   Namen des Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
; Benutzername : Der Name des Benutzers, auf dessen Postfach   zugegriffen werden soll, zum Beispiel xyz00-mustermann.&lt;br /&gt;
&lt;br /&gt;
; Sicherheit : Es ist eine verschlüsselte Verbindung (SSL) zu wählen. Der Port des Servers lautet 995 für POP3 oder 993 für IMAP.&lt;br /&gt;
&lt;br /&gt;
== Postausgangsserver ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot-thunderbird-smtp-server.png|thumb|Einstellungsdialog von Thunderbird 2]]&lt;br /&gt;
&lt;br /&gt;
Um E-Mails mit dem Mailclient über Hostsharing senden zu können, muss der Paketserver als Postausgangsserver eingerichtet werden. Dabei muss die Benutzerauthentifizierung aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
; Server : &#039;&#039;xyz00&#039;&#039;.hostsharing.net, dabei ist &#039;&#039;xyz00&#039;&#039; durch den Namen des Pakets zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
; Benutzername : Der Name eines Benutzers auf dem Paketserver. In der Regel derselbe Name wie für den Posteingangsserver.&lt;br /&gt;
&lt;br /&gt;
; Sicherheit : Wie beim Empfang ist auch hier eine SSL-verschlüsselte Verbindung zu wählen. Der Serverport lautet 465.&lt;br /&gt;
&lt;br /&gt;
== Sicherheitshinweis ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; viele Mailclients richten beim Erstellen eines neuen Kontos über einen Assistenten dieses standardmäßig so ein, dass die Verschlüsselung ausgeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
== Für die Kommandozeilen-Fetischisten ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Rezept zum Verschicken von Mails mit [http://msmtp.sourceforge.net msmtp] (in ~/.msmtprc kopieren):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;procfile&amp;quot; line&amp;gt;&lt;br /&gt;
account default&lt;br /&gt;
host xyz00.hostsharing.net&lt;br /&gt;
auth plain&lt;br /&gt;
user xyz00&lt;br /&gt;
password ********&lt;br /&gt;
tls on&lt;br /&gt;
tls_starttls off&lt;br /&gt;
tls_trust_file /sw/etc/ssl/certs/ca-bundle.crt&lt;br /&gt;
from user@example.com&lt;br /&gt;
syslog LOG_MAIL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter MacOS X mit Fink muss man neben msmtp das Paket [http://pdb.finkproject.org/pdb/package.php/ca-bundle ca-bundle] installieren, unter Debian GNU/Linux das Paket [http://packages.debian.org/stable/ca-certificates ca-certificates]. Die Standard-Zertifikate landen dann in /sw/etc/ssl/certs/ca-bundle.crt (MacOS X mit Fink) bzw. /etc/ssl/certs/ca-certificates.crt (Debian GNU/Linux). Dementsprechend ist gegebenenfalls die &#039;&#039;tls_trust_file&#039;&#039; Option anzupassen.&lt;br /&gt;
&lt;br /&gt;
Das obige Rezept schickt die Mails über Port 465. Alternativ kann man sie auch über Port 25 einkippen, indem man die &#039;&#039;tls_starttls off&#039;&#039; Option entfernt; Nützlich, wenn man hinter einem Firewall sitzt, der Port 465 filtert.&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten einzelner Mailclients ==&lt;br /&gt;
&lt;br /&gt;
[[Mutt für Hostsharing konfigurieren]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:E-Mail]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6878</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6878"/>
		<updated>2024-07-26T18:39:47Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Mit Composer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 &lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21&lt;br /&gt;
das kann überprüft werden mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Juli 2024 ist die Composer Version auf den Hives perfekt für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de/var/&lt;br /&gt;
composer create-projekt drupal/recommended-project drupal10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal10/web die neue Drupal Site.&lt;br /&gt;
Diese dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir subs-ssl/www&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupal.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6877</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6877"/>
		<updated>2024-07-26T18:33:49Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Angepasst auf 07/2024 Daten, Und Empfehlung übernommen, Webseiten unter der www subdomain zu zeigen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 &lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21&lt;br /&gt;
das kann überprüft werden mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Juli 2024 ist die Composer Version auf den Hives perfekt für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de&lt;br /&gt;
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Aktuell Stand 07/2024:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
composer create-projekt drupal/recommended-project drupal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ALternative ist nicht mehr notwendig aktuell (Stand 07/2024&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (z.B.: subs-ssl/www) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir subs-ssl/www&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web subs-ssl/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
cd doms/drupal.hs-example.de/subs-ssl/www&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6876</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6876"/>
		<updated>2024-07-26T17:27:01Z</updated>

		<summary type="html">&lt;p&gt;Dge00: PHP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 &lt;br /&gt;
Stand Juli 2024 ist die Version auf den Hives php 8.2.21&lt;br /&gt;
das kann überprüft werden mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls das nicht aktuell ist bitte die Seite besuchen:&lt;br /&gt;
 [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Juli 2024 ist die Composer Version auf den Hives perfekt für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de&lt;br /&gt;
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir htdocs-ssl&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6875</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6875"/>
		<updated>2024-07-26T17:24:46Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Eingeloggt bleiben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Stand Juli 2024 ist die Composer Version auf den Hives perfekt für drupal, das kann geprüft werden mit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ composer --version&lt;br /&gt;
oder kurz &lt;br /&gt;
$ composer -V&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de&lt;br /&gt;
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir htdocs-ssl&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6874</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6874"/>
		<updated>2024-07-26T17:19:39Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
Aktualisiert auf Basis von drupal 10.3.1 (26.07.2024)&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
hsscript -u xyz00 -i&lt;br /&gt;
Password: ********&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd doms/drupal.hs-example.de&lt;br /&gt;
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rmdir htdocs-ssl&lt;br /&gt;
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# vi .htaccess&lt;br /&gt;
&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
# RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
# uncomment the following line:&lt;br /&gt;
RewriteBase /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd sites/default/files/php/twig&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ../..&lt;br /&gt;
&lt;br /&gt;
chmod 644 .htaccess&lt;br /&gt;
edit .htaccess&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options -Indexes -MultiViews&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 10 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hs.ansible&lt;br /&gt;
cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
vi inventories/my.drupal.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6516</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6516"/>
		<updated>2024-04-10T20:01:44Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Beispiel muster.example.com */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.2, 8.1, 8.0 und 7.4 unterstützt.&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;FastCGI PHP Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6515</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6515"/>
		<updated>2024-04-10T19:51:09Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Auswahl der PHP-Version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.2, 8.1, 8.0 und 7.4 unterstützt.&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;FastCGI PHP-Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;Passenger Python Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6514</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6514"/>
		<updated>2024-04-10T19:46:07Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Anpassung der PHP Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.2, 8.1, 8.0 und 7.4 unterstützt.&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;Passenger Python Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Interpreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;Passenger Python Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6513</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6513"/>
		<updated>2024-04-09T23:03:02Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* PHP 8.2 für ssh-Zugang per Shell aktivieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== PHP per FastCGI ===&lt;br /&gt;
PHP wird bei Hostsharing per FastCGI ausgeführt. Dafür wird automatisch in jedem Domainverzeichnis unter &amp;quot;fastcgi/&amp;quot; und &amp;quot;fastcgi-ssl/&amp;quot; eine &amp;quot;hs-phpstub&amp;quot;-Datei angelegt. Der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
=== Auswahl der PHP-Version === &lt;br /&gt;
&lt;br /&gt;
In HSAdmin kann pro Domain festgelegt werden, welche PHP-Version der &amp;quot;hs-phpstub&amp;quot; für das Ausführen von PHP-Skripten verwendet. Zur Zeit werden die PHP-Version 8.2, 8.1, 8.0 und 7.4 unterstützt.&lt;br /&gt;
&lt;br /&gt;
In HSAdmin gehst du zuerst links in der Navigationsleiste in dein Paket, und wählst dann rechts im Hauptfenster den Reiter &amp;quot;Domains&amp;quot;. Dann wählst du deine Domain, und klickst auf das &amp;quot;Bearbeiten&amp;quot; Symbol.&lt;br /&gt;
Dann kannst du unter &amp;quot;Passenger Python Interpreter&amp;quot; deine gewünschte PHP Version wählen.&lt;br /&gt;
&lt;br /&gt;
Dort kann auch eine selbstinstallierte Version von PHP angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch der Screenshot im Handbuch, auf https://www.hostsharing.net/doc/managed-operations-platform/tutorials/domain/&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Konfiguration === &lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;quot;php.ini&amp;quot; wird zur Konfiguration des PHP-Intergreters verwendet. Die Voreinstellungen können pro Domain überschrieben werden. Dazu legt der Domain-Administrator im Verzeichnis &amp;quot;fastcgi-ssl/&amp;quot; (bzw. &amp;quot;fastcgi/&amp;quot;) eine eigene Datei &amp;quot;php.ini&amp;quot; an.&lt;br /&gt;
&lt;br /&gt;
Der komplette Pfad zu dieser Datei lautet zum Beispiel&lt;br /&gt;
(für den Webspace &amp;quot;xyz00&amp;quot; den Domain-User &amp;quot;xyz00-meinbenutzer&amp;quot; und die Domain &amp;quot;meinedomain.de&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini &lt;br /&gt;
&lt;br /&gt;
In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSIONSNUMMER/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Neustarten der PHP Prozesse mit dem folgenden Kommando erzwingen:&lt;br /&gt;
&lt;br /&gt;
  killall -u $USER -r php&lt;br /&gt;
&lt;br /&gt;
$USER enhält als Umgebungsvariable den aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Pro Domain kann die gewünschte PHP Version gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn mit mehreren Subdomains mit unterschiedlichen PHP Versionen oder Konfigurationen gearbeitet werden soll, empfiehlt sich, die Subdomains direkt als Domain im HSAdmin anzulegen.&lt;br /&gt;
&lt;br /&gt;
Wir benutzen leichtgewichtige Subdomains immer seltener.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
Im HSAdmin gehst du zu deinem Paket xyz00, dort gehst du in rechts in den Reiter Domains, legst dort die Domain muster.example.com an, und wählst bei &amp;quot;Passenger Python Interpreter&amp;quot; entweder eine vorinstallierte PHP Version, oder eine von dir installiert PHP Version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn benötigt:&lt;br /&gt;
vi ~/doms/muster.example.com/fastcgi/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
&lt;br /&gt;
Hostsharing stellt neben der aktuellen Standardversion PHP 8.2 auch die Versionen PHP 7.4, 8.0 und 8.1 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable setzen ====&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Welche verlinkung in &amp;lt;tt&amp;gt;/usr/bin/env&amp;lt;/tt&amp;gt; gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in &amp;lt;tt&amp;gt;~/.profile&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6329</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6329"/>
		<updated>2024-01-07T18:57:17Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Vollendet.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 und 8.2 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php82 .php&lt;br /&gt;
Action application/x-httpd-php82 /fastcgi-bin/phpstub82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
==== Alternative: PATH Variable setzen ====&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus /usr/bin/env nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in ~/.profile oder ~/.bash_profile&lt;br /&gt;
Welche verlinkung in /usr/bin/env gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
sollte ergeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/php&amp;lt;/pre&amp;gt; (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4&lt;br /&gt;
&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/&amp;lt;strong&amp;gt;php&amp;lt;/strong&amp;gt;&amp;lt;/pre&amp;gt; (wichtig, es muss hier als &amp;quot;php&amp;quot; benannt werden&amp;quot;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in ~/.profile oder ~/.bash_profile&lt;br /&gt;
&amp;lt;pre&amp;gt;PATH=&amp;quot;/home/doms/example.com/app/php8.2:$PATH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo $PATH&amp;lt;/pre&amp;gt; überprüfen lässt:&lt;br /&gt;
hier steht jetzt so etwas wie:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;strong&amp;gt;/home/doms/example.com/app/php8.2&amp;lt;/strong&amp;gt;:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&amp;lt;/pre&amp;gt;&lt;br /&gt;
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script &amp;quot;php&amp;quot; schon in dem neu erstellten Ordner gefunden und ruft diesen auf.&lt;br /&gt;
Diese PATH Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt; ergibt nun:&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6328</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6328"/>
		<updated>2024-01-07T18:41:29Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Andere Möglichkeit PFAD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 und 8.2 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php82 .php&lt;br /&gt;
Action application/x-httpd-php82 /fastcgi-bin/phpstub82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
==== Alternative: PATH Variable setzen ====&lt;br /&gt;
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades&lt;br /&gt;
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus /usr/bin/env nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.&lt;br /&gt;
Dieser Aufruf umgeht jeglichen Alias in ~/.profile oder ~/.bash_profile&lt;br /&gt;
Welche verlinkung in /usr/bin/env gesetzt ist lässt sich überprüfen durch den Befehl:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ which php&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir /home/doms/example.com/app/php8.2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/php&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nun wird der Pfad um diesen Punkt erweitert:&lt;br /&gt;
in ~/.profile oder ~/.bash_profile&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6327</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6327"/>
		<updated>2024-01-07T14:53:46Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Vorinstallierte PHP Version wechseln */ auf 8.2 aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 und 8.2 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.2 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php82 .php&lt;br /&gt;
Action application/x-httpd-php82 /fastcgi-bin/phpstub82&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6326</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6326"/>
		<updated>2024-01-07T14:52:40Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* PHP 8.1 für ssh-Zugang per Shell aktivieren */ aktualisiert auf 8.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php81 .php&lt;br /&gt;
Action application/x-httpd-php81 /fastcgi-bin/phpstub81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.2 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.2&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6320</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6320"/>
		<updated>2023-12-31T11:33:03Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Grtammatil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php81 .php&lt;br /&gt;
Action application/x-httpd-php81 /fastcgi-bin/phpstub81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.1 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.1&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6281</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6281"/>
		<updated>2023-11-12T15:05:09Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Mit Ansible bei HS installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
  cd doms/drupal.hs-example.de&lt;br /&gt;
  composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
 ../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
 rmdir htdocs-ssl&lt;br /&gt;
 ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&lt;br /&gt;
  vi .htaccess&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  # RewriteBase /&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
  cd sites/default/files/php/twig&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
  cd ../..&lt;br /&gt;
&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
Dieser Abschnitt ist nicht mehr aktuell, Drupal 10 ist die aktuelle Version (Stand November 2023)&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 9 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
 $ cd hs.ansible&lt;br /&gt;
 $ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
 $ vi inventories/my.drupal.yml&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6280</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6280"/>
		<updated>2023-11-12T14:43:19Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Vorbereitungen */ composer aktuell nutzen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&lt;br /&gt;
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
  cd doms/drupal.hs-example.de&lt;br /&gt;
  composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
 ../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
 rmdir htdocs-ssl&lt;br /&gt;
 ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&lt;br /&gt;
  vi .htaccess&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  # RewriteBase /&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
  cd sites/default/files/php/twig&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
  cd ../..&lt;br /&gt;
&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 9 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
 $ cd hs.ansible&lt;br /&gt;
 $ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
 $ vi inventories/my.drupal.yml&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6279</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6279"/>
		<updated>2023-11-12T14:25:41Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Aktualisiert auf PHP 8.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.1 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php81 .php&lt;br /&gt;
Action application/x-httpd-php81 /fastcgi-bin/phpstub81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.1 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.1&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6278</id>
		<title>PHP</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=PHP&amp;diff=6278"/>
		<updated>2023-11-12T14:24:00Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* PHP 8.1 für ssh-Zugang per Shell aktivieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen &amp;quot;Stub&amp;quot; mit den Rechten des Users auszuführen.&lt;br /&gt;
&lt;br /&gt;
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als&lt;br /&gt;
&lt;br /&gt;
  /usr/local/src/phpstub&lt;br /&gt;
&lt;br /&gt;
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anpassung der PHP Grundkonfiguration === &lt;br /&gt;
&lt;br /&gt;
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon &amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Häufig anzupassen sind z.B.:&lt;br /&gt;
&lt;br /&gt;
* die Content-Type charset= Vorgabe für den HTTP Header.&lt;br /&gt;
&lt;br /&gt;
* der maximal verwendbare Hauptspeicher (memory_limit).&lt;br /&gt;
&lt;br /&gt;
* die maximale Größe hochgeladener Dateien (post_max_size).&lt;br /&gt;
&lt;br /&gt;
* die aktiven Extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beispiel einer php.ini: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
 [..]&lt;br /&gt;
 memory_limit = 128M (default)&lt;br /&gt;
 post_max_size = 8M (default)&lt;br /&gt;
 upload_max_filesize = 2M (default)&lt;br /&gt;
 display_errors = Off (default)&lt;br /&gt;
 log_errors = Off (default)&lt;br /&gt;
 error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log&lt;br /&gt;
&lt;br /&gt;
 [..]&lt;br /&gt;
 default_charset = &amp;quot;UTF-8&amp;quot;&lt;br /&gt;
 ; (ist sonst iso-8859-1)&lt;br /&gt;
 ; Der charset kann aber wiederum durch einen Funktionsaufruf&lt;br /&gt;
 ; header(&amp;quot;Content-Type: text/html; charset=iso-8859-1&amp;quot;)&lt;br /&gt;
 ; im PHP-Skript überschrieben werden (sofern output_buffering = On).&lt;br /&gt;
 ------8&amp;lt; SCHNIPP &amp;gt;8------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beachte:&#039;&#039;&#039; Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
killall -u $USER -r php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. &amp;quot;-r&amp;quot; bewirkt, dass der Ausdruck &amp;quot;php&amp;quot; als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht &amp;quot;php&amp;quot; sondern beispielsweise &amp;quot;php7.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== PHP Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
==== open_basedir ====&lt;br /&gt;
&lt;br /&gt;
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.&lt;br /&gt;
&lt;br /&gt;
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein &amp;quot;/&amp;quot; befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.&lt;br /&gt;
&lt;br /&gt;
Beispielzeile für die php.ini:&lt;br /&gt;
 open_basedir = /home/doms/example.org/subs/&lt;br /&gt;
&lt;br /&gt;
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )&lt;br /&gt;
&lt;br /&gt;
==== Sicherheitskritische Funktionen ====&lt;br /&gt;
&lt;br /&gt;
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,&lt;br /&gt;
&lt;br /&gt;
 allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
und die Ausführung von Systembefehlen.&lt;br /&gt;
&lt;br /&gt;
 disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===&lt;br /&gt;
&lt;br /&gt;
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. &lt;br /&gt;
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel muster.example.com ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/doms/example.com/fastcgi/muster&lt;br /&gt;
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub&lt;br /&gt;
&lt;br /&gt;
und wenn benötigt:&lt;br /&gt;
vi ~/doms/example.com/fastcgi/muster/php.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. &lt;br /&gt;
Im Beispiel handelt es sich um die Domain muster.example.com, also:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd ~/doms/example.com/subs/muster&lt;br /&gt;
 vi .htaccess&lt;br /&gt;
&lt;br /&gt;
 AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
 Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorinstallierte PHP Version wechseln ==&lt;br /&gt;
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2,  7.3 und 8.0, 8.1 an.&lt;br /&gt;
&lt;br /&gt;
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstub73&amp;lt;/code&amp;gt;; das Versionformat ist entsprechend &amp;lt;code&amp;gt;/usr/local/src/phpstub/phpstubXX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 kopieren===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi/&lt;br /&gt;
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===phpstub für PHP 8.0 aktivieren===&lt;br /&gt;
&lt;br /&gt;
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:&lt;br /&gt;
 ~/doms/example.com/.htaccess&lt;br /&gt;
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.&lt;br /&gt;
In der zentralen &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddType application/x-httpd-php80 .php&lt;br /&gt;
Action application/x-httpd-php80 /fastcgi-bin/phpstub80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PHP 8.1 für ssh-Zugang per Shell aktivieren===&lt;br /&gt;
&lt;br /&gt;
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei &amp;quot;~/.profile&amp;quot; ergänzt werden  mit der Zeile: &lt;br /&gt;
&amp;lt;pre&amp;gt;alias php=&#039;/usr/bin/php8.1&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Aktualisierung der Datei &amp;quot;~/.profile&amp;quot; noch eingeben &lt;br /&gt;
&amp;lt;pre&amp;gt;$ source ~/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. &lt;br /&gt;
&lt;br /&gt;
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.&lt;br /&gt;
&lt;br /&gt;
== Eigene PHP Version ==&lt;br /&gt;
Es kann auch eine eigene PHP Version im Paket installiert werden.&lt;br /&gt;
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Eigener PHP FPM Prozess ==&lt;br /&gt;
&lt;br /&gt;
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.&lt;br /&gt;
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
[[Kategorie:WWW]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6277</id>
		<title>Drupal installieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Drupal_installieren&amp;diff=6277"/>
		<updated>2023-11-12T14:06:01Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Mit Composer */ Link zu Composer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drupal bei HS =&lt;br /&gt;
Überprüft auf Installation der V 8.6.7.&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;hsadmin&#039;&#039;, zum Beispiel mit &#039;&#039;hsscript&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;hsadmin&#039;&#039;-Shell starten mit:&lt;br /&gt;
&lt;br /&gt;
  hsscript -u xyz00 -i&lt;br /&gt;
  Password: ********&lt;br /&gt;
&lt;br /&gt;
Dann nacheinander anlegen:&lt;br /&gt;
&lt;br /&gt;
* Linux User als Domain-Administrator&lt;br /&gt;
* Subdomain &#039;&#039;drupal.hs-example.de&#039;&#039;&lt;br /&gt;
* MySQL-User &lt;br /&gt;
* MySQL Datenbank&lt;br /&gt;
&lt;br /&gt;
  xyz00@hsadmin&amp;gt; user.add({set:{name:&#039;xyz00-drupal&#039;,password:&#039;geheim&#039;,shell:&#039;/bin/bash&#039;,comment:&#039;Drupal CMS&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; domain.add({set:{name:&#039;drupal.hs-example.de&#039;,user:&#039;xyz00-drupal&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqluser.add({set:{name:&#039;xyz00_drupaluser&#039;,password:&#039;geheim&#039;}})&lt;br /&gt;
  xyz00@hsadmin&amp;gt; mysqldb.add({set:{name:&#039;xyz00_drupaldb&#039;,owner:&#039;xyz00_drupaluser&#039;}})&lt;br /&gt;
&lt;br /&gt;
== Drupal installieren ==&lt;br /&gt;
&lt;br /&gt;
Anmelden als Linux-User &#039;&#039;xyz00-drupal&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  ssh -l xyz00-drupal xyz00.hostsharing.net&lt;br /&gt;
&lt;br /&gt;
=== Mit Composer ===&lt;br /&gt;
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ &lt;br /&gt;
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies&lt;br /&gt;
  cd doms/drupal.hs-example.de&lt;br /&gt;
  composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)&lt;br /&gt;
 ../lokales-Composer-Verzeichnis/composer.phar  composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction&lt;br /&gt;
&lt;br /&gt;
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:&lt;br /&gt;
 rmdir htdocs-ssl&lt;br /&gt;
 ln -s var/drupal-installationsverzeichnis/web htdocs-ssl&lt;br /&gt;
&lt;br /&gt;
== Drupal für HS anpassen ==&lt;br /&gt;
&lt;br /&gt;
doms/drupal.hs-example.de/htdocs&lt;br /&gt;
&lt;br /&gt;
  vi .htaccess&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  # RewriteBase /&lt;br /&gt;
&lt;br /&gt;
wird zu&lt;br /&gt;
&lt;br /&gt;
  # If your site is running in a VirtualDocumentRoot at http://example.com/,&lt;br /&gt;
  # uncomment the following line:&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
&lt;br /&gt;
== Drupal konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Im Browser auf die Seite &lt;br /&gt;
http://drupal.hs-example.de gehen und den Anweisungen folgen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal4.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal5.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal6.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Drupal7.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Drupal template default für HS konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
  cd sites/default/files/php/twig&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 11 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
und dann noch eine .htaccess &lt;br /&gt;
&lt;br /&gt;
  cd ../..&lt;br /&gt;
&lt;br /&gt;
  chmod 644 .htaccess&lt;br /&gt;
  edit .htaccess&lt;br /&gt;
&lt;br /&gt;
In der Zeile 2 den Eintrag &amp;quot;-ExecCGI&amp;quot; und  &amp;quot;-Includes&amp;quot; löschen, mit diesem Ergebnis:&lt;br /&gt;
&lt;br /&gt;
  Options -Indexes -MultiViews&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach die Seite im Browser neu laden.&lt;br /&gt;
&lt;br /&gt;
= Mit Ansible bei HS installieren =&lt;br /&gt;
&lt;br /&gt;
== Technische Details ==&lt;br /&gt;
&lt;br /&gt;
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.&lt;br /&gt;
&lt;br /&gt;
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/&lt;br /&gt;
&lt;br /&gt;
Es wird die aktuelle Version 9 von Drupal installiert.&lt;br /&gt;
&lt;br /&gt;
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:&lt;br /&gt;
&lt;br /&gt;
Klonen des Repositories:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://codeberg.org/tpokorra/hs.ansible.git&lt;br /&gt;
&lt;br /&gt;
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:&lt;br /&gt;
&lt;br /&gt;
 $ cd hs.ansible&lt;br /&gt;
 $ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml&lt;br /&gt;
 $ vi inventories/my.drupal.yml&lt;br /&gt;
&lt;br /&gt;
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...&lt;br /&gt;
&lt;br /&gt;
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.&lt;br /&gt;
&lt;br /&gt;
Dann kann die Installation vom lokalen Rechner aus gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml init.yml&lt;br /&gt;
 $ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
&lt;br /&gt;
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org&lt;br /&gt;
&lt;br /&gt;
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]&lt;br /&gt;
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]&lt;br /&gt;
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:HSDoku]]&lt;br /&gt;
[[Kategorie:Installationsanleitungen]]&lt;br /&gt;
[[Kategorie:Ansible Playbook]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Blog]]&lt;br /&gt;
[[Kategorie:CMS]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5994</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5994"/>
		<updated>2023-02-15T21:16:05Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Auswertung mit goaccess */ Warnung als Überschrift plus kleinere Korrekturen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
~$mkdir usr&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
 ~$ echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
 ~$ echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
~$ goaccess --version&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
 ~$ goaccess --v&lt;br /&gt;
 GoAccess - 1.7.&lt;br /&gt;
 For more details visit: https://goaccess.io/&lt;br /&gt;
 Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
 &lt;br /&gt;
 Build configure arguments:&lt;br /&gt;
  --enable-utf8&lt;br /&gt;
  --enable-geoip=mmdb&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.&lt;br /&gt;
=== Pipe mit zcat ===&lt;br /&gt;
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:&lt;br /&gt;
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.&lt;br /&gt;
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor&lt;br /&gt;
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat&lt;br /&gt;
 ~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz &lt;br /&gt;
=== Wildcards ===&lt;br /&gt;
zcat kann sehr gut mit Wildcards umgehen, der Aufruf &lt;br /&gt;
 ~$ &#039;&#039;&#039;zcat var/web*.log.gz&#039;&#039;&#039;  | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
zum Beispiel fasst alle logfiles aller Domains und aller Tage  zusammen.&lt;br /&gt;
Es geht auch nur eine Domain: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web-example.com*.log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; oder nur den Januar 2023: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web*202301*log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; (es sollte beachtet werden, dass natürlich immer die Datei, die dann am Tag früh morgens (bei mir ist das zwischen 01:38h und 01:40h) erstellt wird natürlich für den vorherigen Tag ist. Das heißt in der 20230101 ist vor allem der 31.12. geloggt&lt;br /&gt;
&lt;br /&gt;
=== Auswertung mit goaccess ===&lt;br /&gt;
  ~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden. &#039;&#039;&#039;Empfehlung:&#039;&#039;&#039; Datei per scp heruntergeladen, auf dem eigenen, geschützten Rechner angeschaut, und schnell vernichtet.&lt;br /&gt;
&lt;br /&gt;
== Warnung: Datenschutz ==&lt;br /&gt;
Man beachte, dass die Auswertungen Datenschutzrelevante Inhalte wie die IP Adresse und die aufgerufenen Pfade enthalten, bei Nextcloud beinhalten diese häufig auch den Username und somit ggf. den Klarnamen. Entsprechend sollte diese Auswertung nicht öffentlich (ohne Passwortschutz) zugänglich gemacht werden. Siehe dazu [[.htaccess#Passwortschutz_f.C3.BCr_Dateien|Passwortschutz mit htaccess]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5993</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5993"/>
		<updated>2023-02-15T21:09:24Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Wildcards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
~$mkdir usr&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
 ~$ echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
 ~$ echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
~$ goaccess --version&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
 ~$ goaccess --v&lt;br /&gt;
 GoAccess - 1.7.&lt;br /&gt;
 For more details visit: https://goaccess.io/&lt;br /&gt;
 Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
 &lt;br /&gt;
 Build configure arguments:&lt;br /&gt;
  --enable-utf8&lt;br /&gt;
  --enable-geoip=mmdb&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.&lt;br /&gt;
=== Pipe mit zcat ===&lt;br /&gt;
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:&lt;br /&gt;
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.&lt;br /&gt;
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor&lt;br /&gt;
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat&lt;br /&gt;
 ~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz &lt;br /&gt;
=== Wildcards ===&lt;br /&gt;
zcat kann sehr gut mit Wildcards umgehen, der Aufruf &lt;br /&gt;
 ~$ &#039;&#039;&#039;zcat var/web*.log.gz&#039;&#039;&#039;  | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
zum Beispiel fasst alle logfiles aller Domains und aller Tage  zusammen.&lt;br /&gt;
Es geht auch nur eine Domain: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web-example.com*.log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; oder nur den Januar 2023: &#039;&#039;&#039;&#039;&#039;&amp;quot;var/web*202301*log.gz&amp;quot;&#039;&#039;&#039;&#039;&#039; (es sollte beachtet werden, dass natürlich immer die Datei, die dann am Tag früh morgens (bei mir ist das zwischen 01:38h und 01:40h) erstellt wird natürlich für den vorherigen Tag ist. Das heißt in der 20230101 ist vor allem der 31.12. geloggt&lt;br /&gt;
&lt;br /&gt;
=== Auswertung mit goaccess ===&lt;br /&gt;
  ~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden. Man beachte das die Auswertungen Datenschutzrelevante Inhalte wie die IP Adresse und die aufgerufenen Pfade enthalten, bei Nextcloud beinhalten diese häufig auch den Username und somit ggf. den Klarnamen. Entsprechend sollte diese Auswertung nicht öffentlich (ohne Passwortschutz) zugänglich gemacht werden. Siehe dazu [[.htaccess#Passwortschutz_f.C3.BCr_Dateien|Passwortschutz mit htaccess]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5991</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5991"/>
		<updated>2023-02-15T17:24:41Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
~$mkdir usr&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
 ~$ echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
 ~$ echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
~$ goaccess --version&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
 ~$ goaccess --v&lt;br /&gt;
 GoAccess - 1.7.&lt;br /&gt;
 For more details visit: https://goaccess.io/&lt;br /&gt;
 Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
 &lt;br /&gt;
 Build configure arguments:&lt;br /&gt;
  --enable-utf8&lt;br /&gt;
  --enable-geoip=mmdb&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.&lt;br /&gt;
=== Pipe mit zcat ===&lt;br /&gt;
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:&lt;br /&gt;
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.&lt;br /&gt;
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor&lt;br /&gt;
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat&lt;br /&gt;
 ~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz &lt;br /&gt;
=== Wildcards ===&lt;br /&gt;
zcat kann sehr gut mit Wildcards umgehen, der Aufruf &lt;br /&gt;
 ~$ zcat var/web*.log.gz  | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
zum Beispiel fasst alle logfiles aller Domains und aller Tage  zusammen.&lt;br /&gt;
oder nur per Domain: &amp;quot;var/web-example.com*.log.gz&amp;quot; oder nur den Januar 2023: &amp;quot;var/web*202301*log.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Auswertung mit goaccess ===&lt;br /&gt;
  ~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5990</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5990"/>
		<updated>2023-02-15T17:24:01Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Endgültige Version - änderte File decompression etc zu zcat und pipe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
~$mkdir usr&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
 ~$ echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
 ~$ echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
~$ goaccess --version&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
 ~$ goaccess --v&lt;br /&gt;
 GoAccess - 1.7.&lt;br /&gt;
 For more details visit: https://goaccess.io/&lt;br /&gt;
 Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
 &lt;br /&gt;
 Build configure arguments:&lt;br /&gt;
  --enable-utf8&lt;br /&gt;
  --enable-geoip=mmdb&lt;br /&gt;
&lt;br /&gt;
===Anwendung===&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.&lt;br /&gt;
==== Pipe mit zcat ====&lt;br /&gt;
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:&lt;br /&gt;
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.&lt;br /&gt;
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor&lt;br /&gt;
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat&lt;br /&gt;
 ~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz &lt;br /&gt;
==== Wildcards ====&lt;br /&gt;
zcat kann sehr gut mit Wildcards umgehen, der Aufruf &lt;br /&gt;
 ~$ zcat var/web*.log.gz  | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
zum Beispiel fasst alle logfiles aller Domains und aller Tage  zusammen.&lt;br /&gt;
oder nur per Domain: &amp;quot;var/web-example.com*.log.gz&amp;quot; oder nur den Januar 2023: &amp;quot;var/web*202301*log.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Auswertung mit goaccess ====&lt;br /&gt;
  ~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -&lt;br /&gt;
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5989</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5989"/>
		<updated>2023-02-15T16:02:42Z</updated>

		<summary type="html">&lt;p&gt;Dge00: /* Installation */ lokale Installation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:&lt;br /&gt;
z.B. /home/pacs/xyz00/usr &lt;br /&gt;
~$mkdir usr&lt;br /&gt;
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)&lt;br /&gt;
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.&lt;br /&gt;
 ~$ echo &#039;export PATH=&amp;quot;$HOME/usr/bin:$PATH&amp;quot;&#039; &amp;gt;&amp;gt;.bashrc&lt;br /&gt;
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:&lt;br /&gt;
 ~$ echo &#039;[[ -f ~/.bashrc ]] &amp;amp;&amp;amp; . ~/.bashrc&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
nun sind wir bereit für die Installation:&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle&lt;br /&gt;
ein Aufruf von&lt;br /&gt;
~$ goaccess --version&lt;br /&gt;
sollte das zeigen&lt;br /&gt;
 ~$ goaccess --v&lt;br /&gt;
 GoAccess - 1.7.&lt;br /&gt;
 For more details visit: https://goaccess.io/&lt;br /&gt;
 Copyright (C) 2009-2022 by Gerardo Orellana&lt;br /&gt;
 &lt;br /&gt;
 Build configure arguments:&lt;br /&gt;
  --enable-utf8&lt;br /&gt;
  --enable-geoip=mmdb&lt;br /&gt;
&lt;br /&gt;
===Post installation===&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:&lt;br /&gt;
&lt;br /&gt;
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:&lt;br /&gt;
... to be continued...&lt;br /&gt;
&lt;br /&gt;
=== Einzelnes Log File einer Domain und eines Tages auswerden === &lt;br /&gt;
Um ein Log File eines Tages und einer Domain anzusehen benötigt man erstmal das richtige logfile. Wie in der Kerndoku beschrieben findet man das im Paketadmin xyz00 unter ~/var/web-example.com-YYYYMMDD-????.log.gz&lt;br /&gt;
&lt;br /&gt;
Um daraus einen Report zu generieren muss das log erstmal entpackt werden. &lt;br /&gt;
&lt;br /&gt;
 ~/$ mkdir tmp&lt;br /&gt;
 ~/$ cd tmp&lt;br /&gt;
 ~/tmp$ gzip -d ~/var/web-example.com-YYYYMMDD-????.log.gz&lt;br /&gt;
 ~/tmp$ mv ~/var/web-example.com-YYYYMMDD-????.log ./&lt;br /&gt;
 ~/tmp$ ~/goaccess-1.7/goaccess web-example.com-YYYYMMDD-????.log -o ~/tmp/report.html --log-format=COMBINED&lt;br /&gt;
&lt;br /&gt;
Das entpackte Logfile muss nicht zwangsläufig verschoben werden, eher zur Übersichtlichkeit.&lt;br /&gt;
&lt;br /&gt;
Der Report befindet sich dann in ~/tmp/log und kann dann in ein entsprechendes htdocs(-ssl) Verzeichnis verschoben werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5985</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5985"/>
		<updated>2023-02-13T15:35:23Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Verlinkt zu Logging&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, allerdings kommt beim aktivieren der geoip eine Fehlermeldung, daher kann es mit leichten Modifikationen so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 &amp;lt;s&amp;gt;--enable-geoip=mmdb&amp;lt;/s&amp;gt;&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
===Post installation===&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:&lt;br /&gt;
 ~/goaccess-1.7$ ./goaccess ./config.guess&lt;br /&gt;
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:&lt;br /&gt;
... to be continued...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5984</id>
		<title>Goaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Goaccess&amp;diff=5984"/>
		<updated>2023-02-13T15:29:46Z</updated>

		<summary type="html">&lt;p&gt;Dge00: Erstellung goaccess&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um den [[Traffic]] des Pakets im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Die Installation ist erst einmal sehr einfach, allerdings kommt beim aktivieren der geoip eine Fehlermeldung, daher kann es mit leichten Modifikationen so installiert werden wie auf goaccess.io/download beschrieben:&lt;br /&gt;
eingeloggt als Paketadmin z.B. per ssh xyz00&lt;br /&gt;
 ~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ tar -xzvf goaccess-1.7.tar.gz&lt;br /&gt;
 ~$ cd goaccess-1.7/&lt;br /&gt;
 ~/goaccess-1.7$ ./configure --enable-utf8 &amp;lt;s&amp;gt;--enable-geoip=mmdb&amp;lt;/s&amp;gt;&lt;br /&gt;
 ~/goaccess-1.7$ make&lt;br /&gt;
 ~/goaccess-1.7# make install&lt;br /&gt;
===Post installation===&lt;br /&gt;
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:&lt;br /&gt;
 ~/goaccess-1.7$ ./goaccess ./config.guess&lt;br /&gt;
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:&lt;br /&gt;
... to be continued...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Traffic]]&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Benutzer:Dge00&amp;diff=5983</id>
		<title>Benutzer:Dge00</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Benutzer:Dge00&amp;diff=5983"/>
		<updated>2023-02-13T14:55:52Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hallo ich bin Daniel Germer, bin in Südhessen ansässig und betreibe seit 2017 meine Seiten bei hostsharing.&lt;br /&gt;
Nach verschiedenen Anbietern gefällt es mir hier am besten, vor allem ist hostsharing mit der Struktur einer Genossenschaft und hohen ethischen Standards perfekt.&lt;br /&gt;
Meine Seiten betreibe ich mit [[Drupal installieren|drupal]], eine [[nextcloud]] habe ich auch hier installiert.&lt;br /&gt;
Zum trafficlogging versuche ich mit [[goaccess]] einen Überblick zu behalten.&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&amp;diff=5954</id>
		<title>Aktuelles PHP mit phpenv</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&amp;diff=5954"/>
		<updated>2022-11-19T09:43:35Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aktuelle PHP Versionen (8.x , wobei &amp;quot;x&amp;quot; z.B. Stand November 2022 entweder 0.25 oder 1.12 sein könnten) lassen sich in einem &#039;&#039;phpenv&#039;&#039; installieren.&lt;br /&gt;
&lt;br /&gt;
== phpenv ==&lt;br /&gt;
&lt;br /&gt;
Dazu geht man wie folgt vor:&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME&lt;br /&gt;
    $ git clone git://github.com/phpenv/phpenv.git ~/.phpenv&lt;br /&gt;
    $ export PATH=$PATH:~/.phpenv/bin&lt;br /&gt;
    $ eval &amp;quot;$(phpenv init -)&amp;quot;&lt;br /&gt;
    $ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build&lt;br /&gt;
&lt;br /&gt;
Welche PHP-Versionen verfügbar sind, findet man &#039;&#039;&#039;nach&#039;&#039;&#039; der Ausführung des oben beschriebenen &#039;&#039;git clone&#039;&#039; mit:&lt;br /&gt;
&lt;br /&gt;
    $ phpenv install -l&lt;br /&gt;
&lt;br /&gt;
Die voreingestellten Optionen für das Kompilieren von PHP mit php-build holt das Skript aus der Datei&lt;br /&gt;
&lt;br /&gt;
    ~/.phpenv/plugins/php-build/share/php-build/default_configure_options&lt;br /&gt;
&lt;br /&gt;
...man sollte sie sich also zuvor anschauen.&lt;br /&gt;
&lt;br /&gt;
Die PHP-Version &#039;&#039;8.xsnapshot&#039;&#039; aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:&lt;br /&gt;
&lt;br /&gt;
    $ phpenv install 8.xsnapshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== phpstub für FastCGI ==&lt;br /&gt;
&lt;br /&gt;
Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen&lt;br /&gt;
benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c):&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME&lt;br /&gt;
    $ cp -a /usr/local/src/phpstub/ .&lt;br /&gt;
    $ cd $HOME/phpstub&lt;br /&gt;
    $ rm phpstub&lt;br /&gt;
    $ editor phpstub.c&lt;br /&gt;
&lt;br /&gt;
Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab:&lt;br /&gt;
&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;libgen.h&amp;gt;&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
      setenv(&amp;quot;PHPRC&amp;quot;, dirname(argv[0]), 1);&lt;br /&gt;
      const char* phpbin = getenv(&amp;quot;HTTP_PHP_BIN&amp;quot;);&lt;br /&gt;
      if(phpbin) {&lt;br /&gt;
          execl(phpbin, &amp;quot;php&amp;quot;, NULL);&lt;br /&gt;
      } else {&lt;br /&gt;
          execl(&amp;quot;/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi&amp;quot;, &amp;quot;php&amp;quot;, NULL);&lt;br /&gt;
      }&lt;br /&gt;
      return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Dabei sind die Pfadbestandteile &amp;quot;xyz00&amp;quot; und &amp;quot;testuser&amp;quot; durch den Namen des eigenen Paketes und den&lt;br /&gt;
hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte &amp;quot;8.xsnapshot&amp;quot; durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge:&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME/phpstub&lt;br /&gt;
    $ make  &lt;br /&gt;
    $ cp phpstub $HOME/doms/example.com/fastcgi/&lt;br /&gt;
    $ cp phpstub $HOME/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&lt;br /&gt;
In der .htaccess-Datei im DocumentRoot der Sub-Domain &amp;lt;SUBDOMAIN&amp;gt; kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen.&lt;br /&gt;
Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden (&amp;quot;phpstub&amp;quot; ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, &amp;lt;SUBDOMAIN&amp;gt; an die eigene subdomain passen - der Platzhalter &amp;lt;SUBDOMAIN&amp;gt;/ kann ggfs. auch ganz entfernt werden):&lt;br /&gt;
&lt;br /&gt;
  AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
  Action application/x-httpd-phpfastcgi /fastcgi-bin/&amp;lt;SUBDOMAIN&amp;gt;/phpstub&lt;br /&gt;
&lt;br /&gt;
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden&lt;br /&gt;
und&lt;br /&gt;
https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei &#039;&#039;info.php&#039;&#039; mit dem folgenden Inhalt im Verzeichnis &#039;&#039;$HOME/doms/example.com/subs/www/&#039;&#039; bzw. &#039;&#039;$HOME/doms/example.com/subs-ssl/www/&#039;&#039; ablegen.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php&lt;br /&gt;
        phpinfo();&lt;br /&gt;
    ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen&lt;br /&gt;
über das selbstgebaute PHP angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Achtung: &#039;&#039;example.com&#039;&#039; ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain&lt;br /&gt;
zu ersetzen.&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
	<entry>
		<id>https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&amp;diff=5953</id>
		<title>Aktuelles PHP mit phpenv</title>
		<link rel="alternate" type="text/html" href="https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&amp;diff=5953"/>
		<updated>2022-11-19T09:38:43Z</updated>

		<summary type="html">&lt;p&gt;Dge00: &amp;quot;aktuelle Versionen&amp;quot; 7.1.. durch aktuelle Versionen 8.x ersetzt 7.1 ist lange nicht mehr aktuell, 8. wird noch einige Zeit aktuell sein.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aktuelle PHP Versionen lassen sich in einem &#039;&#039;phpenv&#039;&#039; installieren.&lt;br /&gt;
&lt;br /&gt;
== phpenv ==&lt;br /&gt;
&lt;br /&gt;
Dazu geht man wie folgt vor:&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME&lt;br /&gt;
    $ git clone git://github.com/phpenv/phpenv.git ~/.phpenv&lt;br /&gt;
    $ export PATH=$PATH:~/.phpenv/bin&lt;br /&gt;
    $ eval &amp;quot;$(phpenv init -)&amp;quot;&lt;br /&gt;
    $ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build&lt;br /&gt;
&lt;br /&gt;
Welche PHP-Versionen verfügbar sind, findet man &#039;&#039;&#039;nach&#039;&#039;&#039; der Ausführung des oben beschriebenen &#039;&#039;git clone&#039;&#039; mit:&lt;br /&gt;
&lt;br /&gt;
    $ phpenv install -l&lt;br /&gt;
&lt;br /&gt;
Die voreingestellten Optionen für das Kompilieren von PHP mit php-build holt das Skript aus der Datei&lt;br /&gt;
&lt;br /&gt;
    ~/.phpenv/plugins/php-build/share/php-build/default_configure_options&lt;br /&gt;
&lt;br /&gt;
...man sollte sie sich also zuvor anschauen.&lt;br /&gt;
&lt;br /&gt;
Die PHP-Version &#039;&#039;8.xsnapshot&#039;&#039; aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:&lt;br /&gt;
&lt;br /&gt;
    $ phpenv install 8.xsnapshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== phpstub für FastCGI ==&lt;br /&gt;
&lt;br /&gt;
Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen&lt;br /&gt;
benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c):&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME&lt;br /&gt;
    $ cp -a /usr/local/src/phpstub/ .&lt;br /&gt;
    $ cd $HOME/phpstub&lt;br /&gt;
    $ rm phpstub&lt;br /&gt;
    $ editor phpstub.c&lt;br /&gt;
&lt;br /&gt;
Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab:&lt;br /&gt;
&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;libgen.h&amp;gt;&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
      setenv(&amp;quot;PHPRC&amp;quot;, dirname(argv[0]), 1);&lt;br /&gt;
      const char* phpbin = getenv(&amp;quot;HTTP_PHP_BIN&amp;quot;);&lt;br /&gt;
      if(phpbin) {&lt;br /&gt;
          execl(phpbin, &amp;quot;php&amp;quot;, NULL);&lt;br /&gt;
      } else {&lt;br /&gt;
          execl(&amp;quot;/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi&amp;quot;, &amp;quot;php&amp;quot;, NULL);&lt;br /&gt;
      }&lt;br /&gt;
      return(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Dabei sind die Pfadbestandteile &amp;quot;xyz00&amp;quot; und &amp;quot;testuser&amp;quot; durch den Namen des eigenen Paketes und den&lt;br /&gt;
hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte &amp;quot;8.xsnapshot&amp;quot; durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge:&lt;br /&gt;
&lt;br /&gt;
    $ cd $HOME/phpstub&lt;br /&gt;
    $ make  &lt;br /&gt;
    $ cp phpstub $HOME/doms/example.com/fastcgi/&lt;br /&gt;
    $ cp phpstub $HOME/doms/example.com/fastcgi-ssl/&lt;br /&gt;
&lt;br /&gt;
In der .htaccess-Datei im DocumentRoot der Sub-Domain &amp;lt;SUBDOMAIN&amp;gt; kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen.&lt;br /&gt;
Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden (&amp;quot;phpstub&amp;quot; ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, &amp;lt;SUBDOMAIN&amp;gt; an die eigene subdomain passen - der Platzhalter &amp;lt;SUBDOMAIN&amp;gt;/ kann ggfs. auch ganz entfernt werden):&lt;br /&gt;
&lt;br /&gt;
  AddType application/x-httpd-phpfastcgi .php&lt;br /&gt;
  Action application/x-httpd-phpfastcgi /fastcgi-bin/&amp;lt;SUBDOMAIN&amp;gt;/phpstub&lt;br /&gt;
&lt;br /&gt;
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden&lt;br /&gt;
und&lt;br /&gt;
https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei &#039;&#039;info.php&#039;&#039; mit dem folgenden Inhalt im Verzeichnis &#039;&#039;$HOME/doms/example.com/subs/www/&#039;&#039; bzw. &#039;&#039;$HOME/doms/example.com/subs-ssl/www/&#039;&#039; ablegen.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php&lt;br /&gt;
        phpinfo();&lt;br /&gt;
    ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen&lt;br /&gt;
über das selbstgebaute PHP angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Achtung: &#039;&#039;example.com&#039;&#039; ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain&lt;br /&gt;
zu ersetzen.&lt;/div&gt;</summary>
		<author><name>Dge00</name></author>
	</entry>
</feed>