Beschreibung bool phpinfo (int, was INFOALL) Gibt eine große Menge an Informationen über den aktuellen Zustand von PHP aus. Dies umfasst Informationen über PHP-Kompilierungsoptionen und - erweiterungen, die PHP-Version, Serverinformationen und Umgebung (wenn als Modul kompiliert), die PHP-Umgebung, die Versionsinformationen, Pfade, Master - und lokale Werte von Konfigurationsoptionen, HTTP-Headern und PHP Lizenz. Da jedes System anders aufgebaut ist, wird phpinfo () häufig verwendet, um Konfigurationseinstellungen und verfügbare vordefinierte Variablen auf einem gegebenen System zu überprüfen. Phpinfo () ist auch ein wertvolles Debugging-Tool, da es alle EGPCS-Daten (Environment, GET, POST, Cookie, Server) enthält. Parameter Die Ausgabe kann angepasst werden, indem eine oder mehrere der folgenden Konstanten bitweise Werte, die in dem optionalen Parameter zusammengefasst werden, übergeben. Man kann auch die jeweiligen Konstanten oder bitweisen Werte zusammen mit dem Operator kombinieren. Ein Hinweis auf das sehr nützliche Beispiel von jon am sitewizard dot. Die folgenden Aussagen: Statement 1: phpinfoend (arraykeys (phpinfo)) match2 isset (match4). Array (match3, match4). Match3 Statement 2: phpinfoend (arraykeys (phpinfo)) match2 Diese beiden Zeilen erzeugen den Fehler Strict Standards: Nur Variablen sollten durch Verweis übergeben werden. Die Wurzel des Fehlers liegt in der falschen Verwendung der Funktion end (). Der Code funktioniert, aber thows der Fehler. Um dieses Problem zu lösen, verwenden Sie die folgenden Anweisungen: Statement 1 revision: keys arraykeys (phpinfo) phpinfoend (Schlüssel) match2 isset (match4). Array (match3, match4). Match3 Statement 2 revision: keys arraykeys (phpinfo) phpinfoend (keys) match2 Damit wird der Fehler behoben. Um es alles in einem Beispiel umzuhängen: ltphp-Funktion quickdevinsightsphpinfo () obstart () phpinfo (11) phpinfo array (phpinfo gt array ()) if (pregmatchall ((lth2gt (: lta name. gt) (.) (: Ltagt) Lth2d) (: lttr ()) gt (.class) gt (.klassen) gt (.klassen) gt ( ) () (1) phpinfo (1) phpinfo (1) phpinfo (1) phpinfo (1) phpinfo end (Schlüsselwörter1) Spiel 2 isset (Spiel 4). (Match 3, Match 4). (Phpinfo als name gt-Abschnitt) echo lth3gt name lth3gtnlttable classwp-list-table widefat feste pagesgtn foreach (Abschnitt als Schlüssel gt val) If (isarray (val)) echo lttrgtlttdgt Schlüssel lttdgtlttdgt val 0 lttdgtlttdgt val 1 lttdgtlttrgtn elseif (isstring (Schlüssel)) echo lttrgtlttdgt Schlüssel lttdgtlttdgt Val lttdgtlttrgtn Echo lttrgtlttdgt Val lttdgtlttrgtn echo lttablegtn sonst echo lth3gtSchorry, die phpinfo () - Funktion ist nicht zugänglich. Vielleicht ist es disabledlta hrefphpmanualenfunction. phpinfo. php gtSee the documentation. ltagtlth3gt gt Ehrlich gesagt, dachte ich die Mühe der Hinzufügung dieser Notiz, weil das Beispiel von jon am sitewizard dot ca ist wahrscheinlich die beste im Web, und dachte, dass es unglücklich, dass es Wirft Fehler. Hoffe, dies ist nützlich für jemanden. Ich brauchte einen Weg, um schnell durch die phpinfo blättern, die eine große Liste von Informationen ist. So ist es hier. In der Oberseite gibt es eine Liste mit Abschnitten, die neuen Abschnitt geladenen Erweiterungen halten die Links zu den Ankern der geladenen Module. Zeigt der Abschnitt Sitzung Variablen die aktuellen geladenen Sitzungen. Die Verwendung von Domdocument für die Manipulation, so sollten Sie, dass geladen: ltphp obstart () exts getloadedextensions () phpinfo obgetcontents () obendclean () print phpinfo htmlstr phpinfo html new html - gt loadHTML (htmlstr) GetElementsByTagName (title) - gt Element (0) title - gt nodeValue PHP Version. Phpversion () body html - gt getElementsByTagName (body) - gt Element (0) body - gt setAttribute (style. Hintergrundfarbe: beige) Tabellenkörper html - gt getElementsByTagName (Tabelle) - gt Element (3) - gt nextSibling head html - gt getElementsByTagName (table) - gt Element (0) - gt nextSibling obstart () gt lth2gtlta namesessionvariablesgtSession Variablesltagtlth2gt lttable border0 cellpadding2 Breite600gt lttr classhgtltthVariablesltthgtltththValueltthgtlttrgt ltphp foreach (SESSION als Schlüssel-gt-Wert) if (isbool (Wert)) Wert (Wert) true. False else if (Isarray (Wert)) Wert ltpregt. Printr (Wert true). ltpregt else if (empty (Wert) ampamp Wert 0) Wert ltigtno valueltigt gt lttrgt LTTD classegt ltkeygt lttdgt LTTD classvgt ltvaluegt lttdgt lttrgt ltphp gt lttablegt lth2gtlta nameloadedextensionsgtloaded extensionsltagtlth2gt lttable border0 cellpadding2 width600gt LTTR classhgtltthgtExtensionltthgtltthgtVersionltthgtlttrgt ltphp natcasesort (exts) foreach (exts als Wert) Version Phpversion (value) gt lttrgt lttd classe stylewidth: 150pxgtlta hrefmodule ltvaluegt stylecolor: schwarzer hintergrund-farbe: ccccffgt ltvaluegt ltagtlttdgt lttd classvgt lt (leer (version)) version. LtigtUnknownltigt gt lttdgt lttrgt ltphp gt lttablegtlt gt ltphp txtstr obgetcontents () obendclean () txt neu DOMDocument () txt - gt loadHTML (txtstr) txtbody txt - gt getElementsByTagName (body) - gt item (0) foreach (txtbody - gt childNodes als Kind ) Html - gt importNode (child. True) Tabelle - gt parentNode - gt insertBefore (h2) h2 html - gt getElementsByTagName (h2) foreach (h2 als Element) if (item - gt getElementsByTagName (a) - gt Länge 0 ) Wert - gt nodeValue-Element - gt nodeValue ein html - gt createElement (a) a - gt setAttribute (strtolower (strreplace (Wert))) a - gt nodeValue-Wert - gt appendChild (a) ein Element - Gt getElementsByTagName (a) - gt item (0) if (inarray (a - gt nodeValue. exts)) Menü strtolower (strreplace (a - gt nodeValue)) a - gt nodeValue topa html - gt createElement () Inadray (a - gt nodeValue. exts)) txt html - gt createTextNode ((Zum Seitenanfang)) topa - gt appendChild (txt) topa - gt setAttribute (href. ) Sonst txt html - gt createTextNode ((Zur Erweiterungsliste)) topa - gt appendChild (txt) topa - gt setAttribute (href. Loadedextensions) topa - gt setAttribute (Schriftfarbe: beige Schriftgröße: 12px margin-left : 5px Rand-oben: -5px Farbe: schwarz) item - gt appendChild (topa) obstart () gt ltbr gt lttable border0 cellpadding2 Breite600gt lttr classhgtltth colspan2gtSectionsltthgtlttrtr lttrgt ltphp i 0 foreach (Menü als Schlüsselgteinzelteil) lttd classvgtlta href Schlüssel stylebackground - color: cccccc color: blackgt item ltagtlttdgt if (i 2) print lttrgtlttrgt i if (i 2) print lttd classvgtlttdgt gt lttrgt lttablegt ltphp txtstr obgetclean () txt neu DOMDocument () txt - gt loadHTML (txtstr) txtbody txt - gt getElementsByTagName (Body) - gt item (0) foreach (txtbody - gt childNodes als Kind) Kind html - gt importNode (Kind true) Tabelle - gt parentNode - gt insertBefore (untergeordneter Kopf) print html - gt saveHTML () gt Nach dem Lesen Und versuche verschiedene Funktionen, konnte ich nicht finden, die korrekt analysiert alle Konfigurationen, Streifen jede Links-über HTML-Tag und konvertiert Sonderzeichen in UTF8 (z Amp039 in), so dass ich meine eigene durch die Verbesserung auf die vorhandenen: function phpinfo2array () entitiesToUtf8-Funktion (input) phpmanualenfunction. html-entity-decode. php104617 return pregreplacecallback ((amp0-9), Funktion (m), input) PlainText-Funktion (input) use (entitiesToUtf8) zurückgeben (entitiesToUtf8) return trim (htmlentitydecode (entitiesToUtf8 (striptags (input)))) titlePlainText-Funktion (input) use (plainText) return. plainText (input) phpinfo array () Lth1gtConfigurationLth1gt - Tag (andere h1s) if (pregmatch (lth1gtgtsConfiguration.) Lth1s, obgetclean (), matches)) Rückgabewert () Eingabe matches1 Übereinstimmungen array () if (pregmatchall ((lth2.gt (: lta. gt) (.) (: Ltagt) lth2gt): lttr. gtltdd. gt (.) Sltthdgt (: ltthd. gt (.) Sltthdgt)) lttrgt) s, input, matches, PREGSETORDER )) Foreach (Übereinstimmungen als Übereinstimmung) fn strpos (match0, ltth) false. PlainText. Phpinfoend (keys1) fn (match2) isset (match4) () () () () () (Fn (match3), fn (match4)). Fn (match3) else keys1 arraykeys (phpinfo) phpinfoend (keys1) fn (match2) Die Ausgabe sieht ungefähr so aus (beachten Sie, dass die Header ebenfalls enthalten sind, aber vorangestellt werden, zB Richtlinie): Array (phpinfo gt Array (0 gt PHP Version 5.6.5 Systemanforderungen Darwin Calins-MBP 15.0.0 Darwin Kernel Version 15.0.0: Mi Aug 26 19:41:34 PDT 2015 Wurzel: xnu-3247.1.106 5RELEASEX8664 x8664 Build-Datum gt Feb 19 2015 18:34:18 Registriert Stream-Socket-Transporte gt tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0 Eingeschriebene Stream-Filter gt zlib., Bzip2, convert. iconv., String. rot13, string. toupper, string. tolower, String. striptags, convert., Verbraucht, dechunk 1 gt Dieses Programm nutzt das Zend Scripting Language Engine: Zend Engine.) Apache2handler gt Array (Apache Version gt Apache2.4.16 (Unix) PHP5.6.5 OpenSSL0.9.8zg Apache API Version Gt 20120211 Server Administrator gt webmasterdummy-host2.example Hostname: Port gt sitestacker. local: 0 Richtlinie gt Array (0 gt lokaler Wert 1 gt Masterwert) Dies ist erforderlich, um eine W3C-Validierung (XHTML1.0 Transitionnal) zu erhalten. Phpinfos Ausgabe ist mit dieser DTD deklariert: - System-ID hat die falsche Url zu validieren. DTDxhtml1-transitional. dtd anstatt w3.orgTRxhtml1DTDxhtml1-transitional. dtd - Einige Modulnamen enthalten Speicherplatz und die Ausgabe der Funktionen den Namen in Anker als ID und NAME. Können diese Attribute nicht so validiert werden (nur einmaliger Name). Obstart () Capturing phpinfo () phpinfo () info trim (obgetclean ()) Ausgabe Ersetzen Sie Leerzeichen in ID - und NAME-Attributen. If exists info pregreplace ((idname) () () i. 123. info) infodoc neu DOMDocument (1.0 utf-8) Parse phpinfos-Ausgabeoperator verwendet, um Meldungen über nicht definierte Entitäten zu vermeiden oder loadHTML zu verwenden anstelle von infodoc-gt loadXML (info) Doc - gt documentElement - gt appendChild (Hinzufügen von HEAD-Element zu HTML doc - gt importNode (infodoc - gt getElementsByTagName (head) - gt Element (0), true Bei allen Teilbaum)) doc - gt documentElement - gt appendChild (Hinzufügen von BODY-Element Zu HTML doc - gt importNode (infodoc - gt getElementsByTagName (body) - gt Element (0), true Mit dem ganzen Teilbaum)) Jetzt erhalten Sie eine saubere Ausgabe und Sie sind in der Lage zu validieren. Echo (doc-gtsaveXML ()) ODER echo (doc-gtsaveHTML ()) Auf diese Weise ist es einfach, einige Stildeklaration hinzuzufügen: style doc - gt getElementsByTagName (style) - gt item (0) style - gt appendChild (doc - gt CreateTextNode (Einige neue CSS-Regeln, die dem FUNCTION-OUTPUT hinzugefügt werden sollen)), um weitere Informationen anzuzeigen: body doc - gt getElementsByTagName (body) - gt Element (0) element doc - gt createElement (p) element - gt appendChild (doc - gt createTextNode (body) - gt appendChild (Element), um einen neuen Header hinzuzufügen: head doc - gt getElementsByTagName (head) - gt item (0) meta-doc - gt createElement (meta) meta - gt setAttribute (Name) Autor (en) meta - gt setAttribute (Inhalt arimbourg at ariworld dot eu) head - gt appendChild (meta) Wie Sie möchten, nehmen Sie den Rest der Ausgabe und fügen Sie es zum Debuggen aus obgetclean () pre doc - gt createElement ( Div) oder pre pre - gt setAttribute (Formatvorlage: pre) für ein div-Element, unbrauchbar mit pre pre - gt appendChild (doc - gt createTextNode (out)) body - gt appendChild (pre) doc - gt formatOutput true Für eine schöne Einrückung doc - gt saveXML () Alles, was mit RegExp getan werden könnte, aber ich bevorzuge die Verwendung von DOM für die Manipulation von Dokumenten Ich wollte eine einfache Funktion, um die Ausgabe von phpinfo in ein Array zu konvertieren. Heres, was ich kam mit vielen der vorherigen Autoren Tipps und die Quelldatei: php-5.2.6extstandardinfo. c Rufen Sie diese Funktion wie phpinfoarray () das Array, phpinfoarray (1) liefert das Array für Ihre eigene Verarbeitung. Sample Output PHP-Konfiguration gt Array (PHP Version gt 5.2.6 PHP Egg gt PHPE9568F34-D428-11d2-A769-00AA001ACF42 System gt Linux askapache 2.6.22.19-grsec3 Erstellungsdatum gt Nov 11 2008 13:09:07 Konfigurieren Sie den Befehl gt. configure --prefixhomegrsecbinphp Server API gt FastCGI IPv6 Unterstützung gt aktiviert Zend Egg gt PHPE9568F35-D428-11d2-A769-00AA001ACF42 PHP Credits Egg gt PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000) mbstring gt Array (mbstring. httpinput gt pass mbstring. internalencoding gt Array (0 gt ISO-8859-1 1 gt kein Wert) mbstring. language gt neutral) mcrypt gt Array (Version gt 3.5.7 Api Nein gt 20031217) ltphp-Funktion phpinfoarray (zurück falsch) Andale Andale Yee-Hah obstart () phpinfo (Sektionen 0) pi array () foreach (Abschnitte als Abschnitt) n substr (Abschnitt 0. strpos (Abschnitt lth2gt)) pregmatchall (S (: lth2gtltgtgtgt) Lttdgt (.) Lttdgt) (: lttdgt (.) Lttdgt) (: lttdgt (.) Lttdgt) E, Abschnitt, frage, M 2: Arrayslice (m. 2) return (return false). Printr (pi). Pi Diese Funktion analysiert die phpinfo-Ausgabe, um Details zu einem PHP-Modul zu erhalten. Ltphp parse php-Module aus der phpinfo-Funktion parsePHPModules () obstart () phpinfo (INFOMODULES) s obgetcontents () obendclean () s striptags (s. Lth2gtltthgtltgtgt) s pregreplace (ltthgtgt (lt) ltthgthtml ltinfogt1ltinfogt ) VTmp pregsplit ((lth2gtltth2gt)) s, - 1. PREGSPLITDELIMCAPTURE) vModule array () für (i 1 i lt zählen (vTmp) i) if (pregmatch (lth2gt (lt) lth2gt. VTmp i, VMat) vPat3 vPat s vPat v vpat vPat v vvpat v vpat vPat v vpat vPat v vpat vPat v vpat vPat v vpat vPat v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v i ) VModule vName trim (vMat1) trim (vMat 2) return vModules gt Sample Output (vMat1) vModule vName Zuordnung (vMat 1) Zuordnung (vMat 2), trim (vMat 3) : Gd gt Array (GD Support gt aktiviert GD Version gt gebündelt (2.0.28 kompatibel) FreeType Unterstützung gt aktiviert FreeType Linkage gt mit Freetype FreeType Version gt 2.1.9 T1Lib Unterstützung gt aktiviert GIF Lesestatus gt aktiviert GIF Create Unterstützung gt aktiviert JPG Support Gt aktiviert PNG Unterstützung gt aktiviert WBMP Unterstützung gt aktiviert XBM Unterstützung gt aktiviert) Datum gt Array (datetime support gt enabled Zeitzone Datenbank Version gt 2005.14 Zeitzone Datenbank gt internal Standard Zeitzone gt AmericaLosAngeles Richtlinie gt Array (0 gt Lokaler Wert 1 gt Master Value) Datum. timezone gt Array (0 gt kein Wert 1 gt kein Wert)) ltphp eine Modul-Einstellfunktion erhalten getModuleSetting (pModuleName. PSetting) vModule pModuleName pSetting gt Beispiel: getModuleSetting (gd, GD Version) liefert gebündelt (2.0.28 kompatibel) check out diese coole und phantastische bunte phpinfo () obstart () phpinfo () phpinfo obgetcontents () obendclean () ) 0 (0) 0 (0) 0 (0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (I 0 i lt 6 i) r. Substr (hexvalue) mtrand (0. 15), 1) Ersetzungen jr unset (r) für (i 0 i lt count (sucht) i) phpinfo strreplace (sucht, ersetzt phpinfo) echo phpinfo gt Dies ist eine kleine Änderung an der Vorherigen Code durch Code bei adspeed dot com, die die PHP-Module als Array extrahiert. Ich habe es auf PHP 4.1.2 und es fehlgeschlagen, da die lth2gt-Tags auch ein aligncenter hatte. So ändert das Update die Regex für die Tags: parse php modules aus phpinfo Funktion parsePHPModules () obstart () phpinfo (INFOMODULES) s obgetcontents () obendclean () s striptags (s. Lth2gtltthgtltgtgt) s pregreplace (ltthgtgt (lt) ltthgt. ltinfogt1ltinfogt S (vgl.) (Vgl.) (Vgl.) (Vgl.) (Vgl. (VTmp2) vPat (vTmp1) vPat (vTmp1) vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat vPat Wenn vPat vPat ist, (VMat 2), trim (vMat 2), trim (vMat 1) trim (vMat 2), vMat) vModule vNammal (vMat 1) (VMat 2) return vModules gt Aufbauend auf SimonDs elegantes Beispiel zum Ausblenden des angemeldeten Benutzernamens und Passworts, die ansonsten im Klartext erscheinen, sollte für PHP 5.4 folgendes funktionieren: ltphp start output buffering obstart () send phpinfo content phpinfo () Phpinfo content html obgetcontents () spiele den Ausgabepuffer obendclean () remove auth data if (isset (SERVER PHPAUTHUSER)) html strreplace (SERVER PHPAUTHUSER, protected. (PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, PHP, Einstellungen PHP hat viele Umgebungsvariablen, die Sie bei Bedarf aktualisieren können. Beispielsweise müssen Sie möglicherweise Ihre PHP-Speichergrenze aktualisieren, um zu verhindern, dass bestimmte Skripts den Arbeitsspeicher beeinträchtigen. Um diese Werte zu ändern, müssen Sie zuerst sehen, was sie sind. Dazu müssen Sie eine phpinfo-Seite erstellen. Eine phpinfo Seite zeigt Ihnen alle Ihre php Umgebungseinstellungen. Eine phpinfo-Seite ist einfach eine PHP-Seite mit dem folgenden Code: So erstellen Sie eine phpinfo-Seite Wenn Sie nicht mit dem Erstellen einer PHP-Seite vertraut sind, führen Sie die folgenden Schritte aus, um eine phpinfo-Seite mit Ihrem Dateimanager zu erstellen. Melden Sie sich bei Ihrem cPanel an. Öffnen Sie Ihren Dateimanager. Navigieren Sie zu dem Verzeichnis, mit dem Sie arbeiten. Dies ist wichtig, weil jeder Ordner kann tatsächlich eingestellt werden, um verschiedene PHP-Einstellungen haben. In diesem Beispiel sehen wir die PHP-Einstellungen für unsere Hauptdomäne, also navigieren wir zum Ordner publichtml. Klicken Sie im oberen Menü auf Neue Datei. Wenn Sie nach dem Dateinamen gefragt werden, geben Sie phpinfo. php ein (es kann eigentlich alles benannt werden, phpinfo. php ist einfach ein allgemeiner Name für die Datei). Finden Sie die Datei phpinfo. php in Ihrer Liste der Dateien (sollte es automatisch aktualisiert). Klicken Sie mit der rechten Maustaste darauf und wählen Sie Bearbeiten. Wenn Sie die Eingabeaufforderung eines Texteditors sehen, wählen Sie in der Dropdown-Liste utf-8 aus, und klicken Sie dann auf Bearbeiten. Geben Sie den folgenden Text ein: So zeigen Sie Ihre PHP-Einstellungen an Sie können jetzt auf diese Seite über Ihren Browser zugreifen. Wenn Sie die Datei in Ihrem Ordner publichtml erstellt haben, dann besuchen Sie examplephpinfo. php. Die Ergebnisse sollten ähnlich dem folgenden Screenshot aussehen: Um den spezifischen Wert einer Einstellung zu finden, durchsuche die Seite nach dem, was du suchst. In diesem Fall haben wir unsere Browsersuchfunktion (Ctrl f) verwendet und nach Memorylimit gesucht. Der erste Wert, den Sie sehen, ist, was für das aktuelle Verzeichnis (lokaler Wert) gesetzt ist, und der Einstellwert ist der Master-Wert. Der lokale Wert ist die aktuelle Einstellung und ist der wichtige Wert, da die lokalen Werte den Master-Wert überschreiben: Beachten Sie, dass Ihre phpinfo-Seite viele php-Einstellungen hat, die Sie nicht an die Welt senden möchten. Wenn Sie mit der Datei fertig sind, müssen Sie sie löschen. Eine andere Route, die Sie anstatt es löschen können, ist jedoch die Benennung der Datei etwas anderes als phpinfo. php. Wie phpinfo. php so ein allgemeiner Name ist, werden Bots im Web nach dem Zufallsprinzip nach Dateien mit dem Namen phpinfo. php gesucht. Setzen Sie den Dateinamen auf so etwas wie 9823592374823.php würde nie von einem Bot erraten werden (so dass niemand es jemals finden würde), aber es kann schwierig für Sie, dies in der Zukunft zu retten. Wenn Sie einen dieser Werte ändern müssen, finden Sie in unserem Artikel: Wie Sie Ihre lokalen PHP-Einstellungen aktualisieren Dedizierte PHP Hosting InMotion dedizierte Server mit PHP kommen. Eine beliebte Programmiersprache, die von vielen CMS-Plattformen verwendet wird. Wenn Sie daran interessiert sind, Ihren eigenen Server zu betreiben, lesen Sie mehr über unsere dedizierten Hosting-Pläne.
No comments:
Post a Comment