PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   CSV-Datei von extern einlesen geht nicht (http://www.selfphp.de/forum/showthread.php?t=25768)

AlexD 31.01.2016 13:58:39

CSV-Datei von extern einlesen geht nicht
 
Hallo zusammen,

ich habe hier ein für mich seltsames Problem.
Und zwar möchte ich gerne die Daten von meinem Wechselrichter der PV-Anlage auslesen und weiter verarbeiten ggf. in eine MySQL-Datenbank schreiben.

Der Wechselrichter schreibt die Daten in eine CSV-Datei, was eigentlich super ist und zudem ist diese ganz einfach über einen Link zu erreichen.
z.B. http://kaco-wr1.ma-home.local/20160130.csv

Rufe ich diesen Link auf, so wird mir der Inhalt der CSV angezeigt.
Möchte ich diese Datei nun via PHP abrufen so lande ich IMMER im Timeout des Webservers (auf dem das Skript ausgeführt wird).

Ich hab es mit file(), file_get_contents(), fgetcsv() aber auch mit copy() um die Datei erstmal auf den Server zu kopieren. Denn wenn die Datei auf dem Webserver liegt kann ich diese auch auslesen.... es muss also ein Problem beim Verbinungsaufbau bzw. Zugriff auf die Datei sein. Leider wird keine Fehlermeldung angezeigt.

Ein einfaches Test-Script um den Inahlt der CSV anzuzeigen - endet im Timeout.
PHP-Code:

<?php
$row 
1;
if ((
$handle fopen("http://kaco-wr1.ma-home.local/20160130.csv""r")) !== FALSE) {
    while ((
$data fgetcsv($handle1000",")) !== FALSE) {
        
$num count($data);
        echo 
"<p> $num Felder in Zeile $row: <br /></p>\n";
        
$row++;
        for (
$c=0$c $num$c++) {
            echo 
$data[$c] . "<br />\n";
        }
    }
    
fclose($handle);
}
?>

Ein einfacher Link, der auf die Datei zeigt funktioniert ohne probleme wenn man auf diesen klickt.
Keine Ahnung warum ich die Datei in PHP nicht einlesen kann, hoffe Ihr könnt mir auf die Sprünge helfen.

Gruß
Alex

AlexD 31.01.2016 15:19:15

AW: CSV-Datei von extern einlesen geht nicht
 
Hab noch weiter etwas rumprobiert..

Beim nachstehenden Skript wird mit immer ausgegeben, dass die Datei angeblich nicht existiert.

PHP-Code:

<?php

if(file_exists("http://kaco-wr1.ma-home.local/20160130.csv")){
 echo 
"Datei existiert!";
} else {
 echo 
"Datei existiert nicht!!";
}

Direkter Link funktioniert nach wie vor, PHP sagt bei der Prüfung die Datei existiert nicht.
Versteh das im Moment nicht so wirklich.

Ach ja: allow_url_fopen ist in der php.ini auf on

sysop 01.02.2016 13:47:45

AW: CSV-Datei von extern einlesen geht nicht
 
file_exists() greift (soweit ich weiss) auf das lokale Filesystem zu, sprich untersucht , ob eine Datei oder ein Verzeichnis vorhanden ist. URL`s sind also keine gültige Pfadangabe.

Lies die Datei mit file() ein und prüfe, ob sie leer ist.

PHP-Code:

$zeilen file("http://kaco-wr1.ma-home.local/20160130.csv");
print_r($zeilen); 


AlexD 01.02.2016 14:15:36

AW: CSV-Datei von extern einlesen geht nicht
 
Hey sysop,

vielen Dank für die Antwort.

Leider funktioniert auch das nicht, läuft wieder in einen Timeout.

Ich bin mit meinem Latein echt am Ende, mit einem ganz einfachen Link auf die Datei wie :
<a href="http://kaco-wr1.ma-home.local/20160130.csv">Linkname</a> funktioiert einwandfrei!
Die CSV wird dann im Browser geöffnet und dargestellt.

vt1816 02.02.2016 16:06:51

AW: CSV-Datei von extern einlesen geht nicht
 
Wenn auf Deinem Server erlaubt:
PHP-Code:

set_time_limit(0); 

oder in der php. ini entsprechend anpassen.

Musst Du die ganze Datei in einem Stück einlesen? Wie groß ist die Datei, dass das Script in den Timeout läuft?

AlexD 02.02.2016 18:04:07

AW: CSV-Datei von extern einlesen geht nicht
 
Das ist auf meinem Server schon erlaubt auch könnte ich die Ausführungszeit nochmals hochsetzten.

Aber die Datei hat 7kb und sollte diesbezüglich sehr schnell eingelesen sein.

Hab mal zum Wechselrichter durchgeroutet, ist ja nix geheimnisvolles was meine PV grade so liefert.
http://lan-seeacker.dyndns.org:8080

Direkter Link auf die CSV: http://lan-seeacker.dyndns.org:8080/20160202.csv

So könnt Ihr auch gerne selbst mal testen ob Ihr an die CSV kommt.
Hab's grade auch nochmal mit der dyndns.org-Adresse getestet, ich komme nicht an die csv-Datei. :-(

Hab schon in den Einstellungen des Wechselrichters gesucht ob es da irgendeine Option gibt die so einen Zugriff blockieren bzw. unterbinden könnte, hab aber nichts dergleichen gefunden.
Würde auch keinen Sinn machen wenn man die Daten eh exportieren kann.

vt1816 04.02.2016 09:49:34

AW: CSV-Datei von extern einlesen geht nicht
 
Prüfe (nochmal) die Servereinstellungen. Welche Rechte hat das Script (index.html)?
Beim Zugriff erhalte ich folgende Fehlermeldung
Zitat:

unable to connect to lan-seeacker.dyndns.org:8080 (Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. )

AlexD 04.02.2016 13:59:26

AW: CSV-Datei von extern einlesen geht nicht
 
Die Rechte kann ich so leider nicht prüfen, denn die Adresse leitet direkt auf den internen Webserver des Wechselrichters!
Der Server reagiert leider nicht immer sehr zuverlässig!

Einfach nochmal probieren.
Hab ja zwei Wechselrichter, und das Phänomen tritt bei Beiden auf.

vt1816 04.02.2016 17:52:26

AW: CSV-Datei von extern einlesen geht nicht
 
Nimm mal Kontakt zu Matthias Haag (CTO von KACO new energy GmbH) auf.
Er oder einer seiner Mitarbeiter sollte Dir die Frage beantworten können, ob Du überhaupt wie von Dir gewünscht auf den Webserver auf Deinem Wechselrichter blueplanet 4.6 TL1 zugreifen kannst/darfst.
Der externe Verscuh war möglich. Jedoch jeglicher (auslesende) Zugriff auf eine beliebige Datei auf dem Webserver (*.css, *.gif, *.js etc.) war von extern nicht möglich. Vlt. klappt es innerhanlb Deines Netzwerkes.

sysop 05.02.2016 13:22:09

AW: CSV-Datei von extern einlesen geht nicht
 
Mir geht es genauso, kann auch nichts lesen. Möglicher Weise ist der ausgelieferte header auch nicht http konform und PHP verweigert deshalb die Annahme.

fsocksopen erlaubt den Zugriff genauso wenig.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:27:55 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.