Integration von phpinfo in Disk Station Manager

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die folgende Anleitung zeigt, wie man einen Anzeige der PHP-Konfiguration in den Disk Station Manager als 3rd-party-application einbaut.

Achtung: Hierzu sind ein paar Änderungen in einer Konfigurationsdatei erforderlich; diese sollte daher immer vorher kopiert werden (z.B. cp xxx xxx.org). Wie immer erfolgen alle Änderungen mit telnet-Aufruf auf der DS und auf eigene Kappe :D

Voraussetzung: Die Option HTTPS-Verbindung ist aktiv, d. h. auf den Web Station Manager wird mit https://IP_der_DS:5001 zugegriffen.

(1) PHP-Skripte sollen von dem System-Web-Server auch ausgeführt werden. Dazu sind 2 Zeilen in der Datei /usr/syno/apache/conf/httpd.conf-sys am Ende einzutragen:

(Daran denken, eine Kopie der Datei vorher anzufertigen.)

AddType application/x-httpd-php .php
LoadModule php5_module /lib/libphp5.so


(2) Den System-Web-Server neu starten: /usr/syno/etc/rc.d/S97apache-sys.sh restart

(3) Eine Datei im Verzeichnis /etc/syno/synoman/phpsrc namens phpinfo.php mit folgendem Inhalt anlegen:

<?php phpinfo(); ?>

(4) Ein Verzeichnis anlegen: /usr/syno/synoman/webman/3rdparty/phpinfo. In diesem Verzeichnis die Datei application.cfg erfassen:

text = phpinfo
description = Anzeige der aktuellen PHP-Konfiguration
type = embedded
protocol = https
adress = localhost
port = 5001
path = /phpsrc/phpinfo.php


(5) Disk Station Manger aufrufen & testen

Anmerkung: Die Integration des phppgadmin kann man nach diesen Vorarbeiten auch so anpassen, dass sie über das Protokoll https und den Port 5001 läuft und damit vielleicht besser angesichert ist.
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
ich glaube ich habe in der application.cfg einen Tippfehler

adress = localhost <- falsch

address = IP_deiner_DS <- richtig
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
...noch besser ist es, die Zeilen "adress" und "port" ganz wegzulassen, dann werden die Werte der aktuellen Verbindung einfach übernommen. Es funktioniert dann sowohl über Port 5000 als auch über Port 5001 und über die interne und externe IP.

Itari, ich hab da noch eine andere Frage: Es scheint ja so zu sein, dass bereits im Grundzustand der Synology Stations zwei verschiedene Apache-Server laufen, nämlich "/usr/syno/etc/rc.d/S97apache-sys.sh" und "/usr/syno/etc/rc.d/S97apache-user.sh". Wo finde ich denn bitte die php.ini für den System-Apachen um dort das open_basedir anzupassen?

Trolli
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@trolli,

danke für den Tipp mit dem Weglassen der beiden Eintragungen (address und port), werde ich gleich mal ausprobieren.;)

Der Apache-Web-Server ist ja mittlerweile eine eierlegende Wollmilch*** geworden. Damit er seine Aufgaben gut erledigen kann gibt es u. a. das Konzept, dass er für Anfragen (vom Browser aus) und spezielle Verarbeitungen (also nicht nur platt einen Datei holen und senden) sich aufteilt in weitere Prozesse und Threads. Deshalb sieht man auch mehrere httpd-Prozesse mit ps. D. h. auch wenn ich nur einen Apache starte, gibt es bereits mehrere Web-Server (unter anderem beruhen die sogenannten virtuellen Apache-Web-Server auf diesem Konzept).

Man kann nun das gleichen Apache-Programm (httpd) mit unterschiedlichen Konfigurationen starten; hier auf der DS wird das mit zwei unterschiedlichen httpd.conf-Dateien gemacht. Im Grunde bleibt es aber immer noch der gleiche Apache (= das gleiche binary), nur unterschiedlich gestartet. Warum sage ich das? Weil der Programmcode (=binary) nur einmal im Memory ist, auch wenn ich ganz viele Prozesse mit ps sehen oder mit unterschiedlichen httpd.confs starte. Diese Fähigkeit einen Programmcode (=binary) nur einmal zu laden, aber ganz unterschiedlich zu benutzen, ist in Linux völlig normal. Ich sage das deshalb, weil sonst gleich die Frage kommt, brauch ich denn so viele Webserver ... müllt mir das nicht das Memory zu. Nein - auf keinen Fall!

Jetzt merkst du, dass das Thema nicht ganz einfach ist ;) Das gleiche Programm (httpd) wird ganz oft gestartet, und dann noch mit unterschiedlichen Startvorgaben.

Solange die Apaches in ihren httpd.conf auf die gleiche php-CGI-Datei oder alternativ auf die gleiche /lib/libphp5.so zugreifen (diese beiden Konzepte gibt es im Umgang mit PHP), werden standardmäßig bestimmte Directories nach der php.ini abgesucht und wenn gefunden, dann benutzt.

Antwort auf deine Frage: Da "beide" Apaches auf die gleiche /lib/libphp5.so zugreifen (so du es eingerichtet hast), benutzen sie beide die gleiche /usr/syno/etc/php.ini! D.h. die Anpassung der Konfigurationseintragung open_basedir gilt für alle Apache-Web-Server, die mit der DS ausgeliefert wurden.

Jetzt kommt bestimmt die Frage: Ist das nicht gefährlich? :D Nein, solange kein anderer PHP-Skripte auf die DS kopiert und ausführt, hast du das immer voll im Griff. Nebenbei bemerkt, definierst du mit open_basedir auch keine Pfade, sondern Muster, die gegen Pfadnamen geprüft werden - weil das aber auch kaum jemand genau versteht, wiegt man sich nur in eine scheinbare Sicherheit, wenn man da was angibt.

itari
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Danke für die ausführliche Erklärung. Eigentlich hatte ich mir das auch so ähnlich vorgestellt. Das Problem war nur, dass es nach meiner Änderung der php.ini und dem Neustart beider Apaches nicht funktioniert hat. Und was soll ich sagen? Nachdem Du es jetzt so schön erklärt hast, und ich das ganze jetzt nochmal versucht habe, klappt es auf einmal. Ich wüsste nicht, was ich vorhin anders gemacht hätte...

Vielen Dank also nochmal - Deine Erklärung hat mir sehr geholfen! :D

Die Option "protocol" kannst Du übrigens auch weglassen - die wird auch von der aktuellen Verbindung übernommen...

Trolli
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@Trolli,

danke für den Tipp mit 'protocol' ;)

Ich hab von irgend jemanden einen magenta Rüffel bekommen, dass ich nicht genug erklären würde, deshalb habe ich mich ein wenig ausgelassen. (Ist ja vielleicht auch für andere Zwecke ganz nützlich zum Übernehmen :D).

Super, das es jetzt klappt!!! Ich hab bei mir das Fenster aufgemacht und meinen Hexenbesen geschwungen. Wahrscheinlich hat das geholfen :D Aber das Spiel mit dem Restart von Server und dem nicht alles Übernehmen kenne ich auch.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat