Webservice für APIs konfigurieren

Status
Für weitere Antworten geschlossen.

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Hallo!
Nachdem mich meine Buffalo Linkstation letzte Woche im Stich gelassen hat, habe ich mich kurzer Hand für eine DS411 von Synology entschieden. Dabei war mir unter anderem wichtig meine programmierten Webseiten darauf testen zu können.
Eine dieser Seiten greift nun auf eine API im WWW zu und was bei der Linkstation ohne Konfiguration und ohne Probleme lief, funktioniert bei der DS garnicht.
Was muß ich machen um der Seite den Zugriff zu ermöglichen?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das solltest jetzt noch ein wenig anreichern, z.B. was du unter API-Zugriff verstehst ... meine Fremd-APIs sind alle JavaScript basiert und haben deswegen mit der DS rein gar nichts am Hut - aber das scheinst ja nicht zu meinen ...

Itari
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Vielleicht sollte ich auch noch hinzufügen, dass sowohl die Fritzbox als auch die DS über einen Switch miteinander verbunden sind.
Das Script, das nicht läuft, ist eigentlich ein ganz simples Php-Script, das eine Variabel an eine WWW-Seite verschickt und ein XML-Dokument zurück bekommt. Das Script funktioniert auf dem Web-Server meines Internet-Providers. Somit möchte ich mal ausschließen das es fehlerhaft ist.
Das eigentliche Problem ist wohl, dass die DS garnicht auf das Internet zugreifen kann. Zumindest lädt sich die Seite tot.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ist denn bei dir PHP im DSM überhaupt aktiviert? Bist du sicher, dass die DS keine Verbindung zum Internet bekommt oder ist das nur eine Vermutung? Willst du denn von extern auf dein PHP Script zugreifen oder von innerhalb deines LANs? Da du von XML schreibst: Im DSM kann man in den PHP Optionen verschiedene Module aktivieren. Eines davon ist afaik ein XML-Parser
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das eigentliche Problem ist wohl, dass die DS garnicht auf das Internet zugreifen kann. Zumindest lädt sich die Seite tot.

Das kannst aber einfach heraus bekommen ... Paket-Manager im DSM

Itari
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
@jahlives: Php ist aktiviert und funktioniert auch wunderbar. Ist natürlich nur eine Vermutung, das die DS nicht auf das Internet zugreifen kann. Allerdings bekomme ich schon bei der einfachen Anweisung
<?php
include "http://www.synology-forum.de";
?>

die Fehlermeldung:
Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /volume1/web/testseite/test.php on line 10 Warning: include(http://www.synology-forum.de): failed to open stream: no suitable wrapper could be found in /volume1/web/testseite/test.php on line 10 Warning: include(): Failed opening 'http://www.synology-forum.de' for inclusion (include_path='.:/usr/syno/php/lib/php') in /volume1/web/testseite/test.php on line 10

Was mich auch zur nächsten Frage leitet: Wo kann ich die php.ini editieren?

Selbst <img> mit externer url werden nicht geladen.

Auf die Seite greife ich aus dem LAN heraus drauf zu. Dieser LAN Host ist ja zum ausprobieren der Seiten gedacht ohne immer wieder alle Daten auf den eigentlichen Webserver hochladen zu müssen.

Vielleicht habe ich es noch nicht gefunden, aber unter DSM->Webdienste->PHP-Einstellungen kann ich keine Module zum aktivieren finden.

@Itari: Was kann ich denn im Paket-Manager herausfinden? Bei mir stehen da nur die installierten Pakete bzw. die, die ich herunterladen kann. Hab da nnoch nichts installiert, brauchte ich bislang nix von.
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
na ja so sollte man externe Quellen auch ned einbinden :) Besser wäre z.B. eine Funktion wie file_get_contents(). Probier mal das
PHP:
<?php
echo file_get_contents('http://www.synology-forum.de');
?>
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Das war ja auch nur als Beispiel zum ausprobieren gedacht.

Bei file_get_contents('http://www.synology-forum.de') lädt sich die Seite wieder tot. Das muß doch 'ne Einstellungssache sein......
Mal davon abgesehen hilft mir das bei extern in HTML eingebundenen Bildern auch nicht weiter.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
also eingentlich ist include() nicht für remote Dateien gedacht. Man kann es zwar so konfigurieren, macht aber imho auch keinen Sinn. Denn include() bindet den Inhalt 1:1 in den Quellcode ein d.h. wenn das Bild eigentlich PHP Code wäre, wäre dein System tot wenn du den include so machst. Remote includes sind ein grosses Sicherheitsrisiko und darum per default von php verboten.
Um sicher zu sein, dass deine DS Internet hat: Melde dich als root auf deiner DS via telnet oder ssh an und gib
Code:
ping -c 4 google.de
ein. Wenn du Antwort bekommst hat deine DS Internet wenn nein dann nicht :)
Mal davon abgesehen hilft mir das bei extern in HTML eingebundenen Bildern auch nicht weiter.

das musst du mir aber erklären
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das Beispiel von jahlives funktioniert auf meiner ds207+ ohne Probleme ...

Zu der Frage mit dem Paketmanager ... welche Firmware-Version ist auf deiner DS?

Itari
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
@Jahlives: Um es nochmal klarzustellen: Mit der include Anweisung wollte ich lediglich die Internetkonektivität der DS testen. Auf meinem Webserver funktioniert das Script, auf der DS halt nicht. Genau so wenig wie mit file_get_contents. Normalerweise wird auf meinen Seiten include nur zum einbinden interner Dokumente verwendet. :)
Mal davon abgesehen hilft mir das bei extern in HTML eingebundenen Bildern auch nicht weiter.

das musst du mir aber erklären

Bei einem html-Tag <img src="externer Link"/> hilft mir ein php-Script mit file_get_contents nicht viel weiter.
Als root auf meiner DS per Telnet anmelden? Sorry, aber mit sowas habe und musste ich mich noch nie beschäftigen. Keine Ahnung wovon du sprichst.

@Itari:Wie ich gerade feststellen musste eine alte. Bin gerade dabei die neue Version runterzuladen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Bei einem html-Tag <img src="externer Link"/> hilft mir ein php-Script mit file_get_contents nicht viel weiter.
und wie kommt da ein file_get_contents ins Spiel?? img src kann direkt vom Client angesprochen werden, verstehe ned wieso da noch PHP dazwischen kommen sollte.
Zum Thema Konsole guck bitte mal ins Wiki...
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
und wie kommt da ein file_get_contents ins Spiel?? img src kann direkt vom Client angesprochen werden, verstehe ned wieso da noch PHP dazwischen kommen sollte.
Genau das wollte ich eigentlich damit sagen.

Beim durchstöbern der Wiki habe ich nun nichts zu telnet und anpingen gefunden, aber vielleicht wärst du ja so nett und sagst mir einfach wo's steht ? ;)

Allerdings bin ich in der Wiki über die Portfreigabe gestolpert (hätte man auch früher drauf kommen können) und 1-2-3 eigerichtet funktioniert nun die api, die file_get_contents und sogar die böse include Anweisung! ;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Lass es mit remote includes. include sollte wirklich nur für Files verwendet werden, die PHP Code enthalten (und am besten nur für lokale Files). Wenn du unbedingt externen PHP Code parsen willst, dann würde ich eine Combo aus echo + file_get_contents + eval benutzen. Damit hast du noch die Chance den externen Code zu prüfen und eine ausführung allenfalls zu unterbinden. Bei include wird sofort ausgeführt
Wegen dem ping: einmal http://www.synology-wiki.de/index.php/Die_Kommandozeile und einmal http://www.synology-wiki.de/index.php/Grundlegende_Befehle_auf_der_Kommandozeile :)

Das mit der Portweiterleitung finde ich höchst verdächtig, weil bei einer Verbindung von deiner DS ins Internet diese überhaupt nicht zum Tragen kommen sollten. Weiterleitungen sind nur für neue eingehende Verbindungen nötig. ausgehende Verbindungen sind davon eigentlich ned betroffen.
 

Kelsier

Benutzer
Mitglied seit
29. Feb 2012
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Vielen Dank nochmal für den Hinweis, aber du kannst dir sicher sein, das ich eigentlich überhaupt keine externen Seiten in meine einbinde.

Muß mich bezüglich der Portweiterleitung auch nochmal korrigieren. Habe sie nochmal gelöscht und sowohl die api als auch file_get_contents() funktionieren trotzdem immer noch. Allerdings ist inzwischen die neueste DSM installiert. kann es damit etwas zu tun gehabt haben?
 
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