Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd przy otwieraniu linku
Forum PHP.pl > Forum > PHP
wachcio
Witam

Chcę za pomocą skryptu PHP otworzyć plik txt na moim serwerze w domu z innego serwera (Home.pl). Serwer jest uruchomiony na Raspberry Pi i jest ustawione przekierowanie portów na wewnętrznym ruterze.

Skrypt PHP:
  1. $filePath_temp = "ftp://82.160.79.52:85/nettemp/temperatury.txt";
  2. $dane = fread(fopen($filePath_temp, "r"), filesize($filePath_temp));
  3. $plik = explode(":", $dane);


Niestety sypie błędami:

Warning: fopen(ftp://82.160.79.52:85/nettemp/temperatury.txt) [function.fopen]: failed to open stream: operation failed in /wachcio/nettemp/index.php on line 17

Warning: filesize() [function.filesize]: stat failed for ftp://82.160.79.52:85/nettemp/temperatury.txt in /wachcio/nettemp/index.php on line 17

Warning: fread(): supplied argument is not a valid stream resource in /wachcio/nettemp/index.php on line 17

Co robię nie tak? Może to wina ustawienia serwera na Raspberry? W przeglądarce link otwiera się normalnie...
Tomplus

użyj funkcji

  1. $dane = file_get_contents($filePath_temp);


Możesz pobrać dane z innego serwera o ile masz uprawnienia do pliku.
wachcio
Niestety otrzymuję coś takiego:

Warning: file_get_contents(ftp://82.160.79.52:85/nettemp/temperatury.txt) [function.file-get-contents]: failed to open stream: operation failed in /wachcio/nettemp/index.php on line 18
Tomplus
Nie połączyło cię bo żąda hasła, ale funkcja działa, spróbuj dać:

  1. file_get_contents("ftp://user:password@82.160.79.52:85/nettemp/temperatury.txt")
  2. //lub
  3. fopen("ftp://user:password@82.160.79.52:85/nettemp/temperatury.txt", "r");
wachcio
Niestety znów porażka. Dostaję odpowiednio następujące kumunikaty:

Warning: fopen(ftp://...@82.160.79.52:85/nettemp/temperatury.txt) [function.fopen]: failed to open stream: FTP server reports 550 Could not get file size. in /wachcio/nettemp/index.php on line 19

i

Parse error: syntax error, unexpected T_VARIABLE in /wachcio/nettemp/index.php on line 21
LowiczakPL
Otwieranie plików ze zdalnego serwera najczęściej jest nieaktywne, dla fopen

ale co innego jest z CURL, http://php.net/manual/pl/book.curl.php

PS. oczywiście plik musi mieć prawa do odczyty dla wszystkich, 666, 655, 755, lub 766
wachcio
A jak sprawdzić czy mam tę opcję aktywną czy nie?

Przez bezpośredni link w przeglądarce otwiera normalnie
com
czemu łączysz się do tego przez ftp?

http://php.net/manual/en/ref.ftp.php
wachcio
Mnie jest bez różnicy jak ja uzyskam dostęp do tego pliku. Masz jakąś mniej kłopotliwą metodę?


EDIT:

Problem rozwiązany trochę zakręconą metodą przez kopiowanie:

  1. <?php
  2.  
  3. // define some variables
  4. $local_file = 'temperatury.txt';
  5. $server_file = 'nettemp/temperatury.txt';
  6. $ftp_server = '82.160.79.52';
  7. $ftp_user_name = 'login';
  8. $ftp_user_pass = 'haslo';
  9.  
  10. // set up basic connection
  11. $conn_id = ftp_connect($ftp_server, 85);
  12.  
  13. // login with username and password
  14. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  15.  
  16. // try to download $server_file and save to $local_file
  17. if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
  18. echo "Successfully written to $local_file\n";
  19. } else {
  20. echo "There was a problem\n";
  21. }
  22.  
  23. // close the connection
  24. ftp_close($conn_id);
  25.  
  26. ?>


Później odczyt pliku lokalnie przebiega już bez problemów
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.