[PHP] Problem z otwarciem pliku znajdującego sie poza serw.

[PHP] Problem z otwarciem pliku znajdującego sie poza serw.
.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

Witam
Mam problem, a mianowice nie moge sie odwolac do pliku znajdującego sie na zewnętrznym serwerze, gdy plik znajduje sie na serwerku to wszystko ładnie śmiga, jednak jeśli znajduje się gdzieś poza serwerem to sie wysypuje. Mam dostęp do .htaccess. Macie może jakieś pomysły na rozwiązanie tego problemu??
Z góry dzięki. [browar]
Pozdrawiam.

Coldpeer
Moderator
  • Rejestracja:ponad 19 lat
  • Ostatnio:około rok
  • Lokalizacja:Londyn
0
Kopiuj
echo file_get_contents('http://serwer.pl/plik.txt');

<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>
.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0
Coldpeer napisał(a)
Kopiuj
echo file_get_contents('http://serwer.pl/plik.txt');

No niestety też nie śmiga:(

Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 13 godzin
0

Dostajesz błąd jakiś?

Prawdopodobnie problem jest związany z opcją allow_url_fopen ustawioną na false w pliku php.ini, albo z włączonym safe_mode (ewentualnie na stałe ustawionym open_basedir w pliku php.ini). Być moze da się ustawić to tak jak trzeba przez .htaccess, ale nigdy nie próbowałem zmieniać przez to ustawień PHP (na oko to coś w stylu polecenia php_value allow_url_fopen 1).

.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0
Ktos napisał(a)

Dostajesz błąd jakiś?

Prawdopodobnie problem jest związany z opcją allow_url_fopen ustawioną na false w pliku php.ini, albo z włączonym safe_mode (ewentualnie na stałe ustawionym open_basedir w pliku php.ini). Być moze da się ustawić to tak jak trzeba przez .htaccess, ale nigdy nie próbowałem zmieniać przez to ustawień PHP (na oko to coś w stylu polecenia php_value allow_url_fopen 1).

Warning: fopen(http://www.google.com/images/firefox/fox1.gif): failed to open stream: No route to host in /home/cymeshh/index.php on line 126
To odnośnie błędu, niestety zmiany w pliku .htaccess nic nie dają:(

Adamo
  • Rejestracja:około 21 lat
  • Ostatnio:około 13 lat
0

a spróbuj z innym adresem, albo zobacz czy zadziała zamiast www.google.com - 72.14.207.99, odpal phpinfo() i po prostu sprawdź wartości dla allow_url_fopen, safe_mode, open_basedir czy w ogóle o to chodzi i czy warto się grzebać w .htaccess

jaką masz wersję php ? poczytaj komentarze na http://pl.php.net/fopen


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">
.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

allow_url_fopen On
safe_mode Off
open_basedir /home/cymeshh:/usr/lib/php:/usr/local/lib/php:/tmp

Wersja php:
PHP Version 4.4.2 with Hardening-Patch 0.4.8

Może to pomoże:
http://cymeshh.fileplace.biz/phpinfo.php

W komentarzach pisze aby zmienić fopen na file_get_contents ale niestety to nic nie daje:(

Adamo
  • Rejestracja:około 21 lat
  • Ostatnio:około 13 lat
0

No to ci już Ktos pisał o basedir a ty nic nie mówisz, a w komentarzach nie pisze żeby zmienić na file_get_contents tylko jest mnóstwo rozwiązań chociażby z fsockopen które powinno zadziałać


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">
CK
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 2 lata
  • Postów:2692
0
Adamo napisał(a)

fsockopen które powinno zadziałać

A nie lepiej curl :> Zaimplementowane jest ;)

0

Osobiście uzywam fsockopen:

Kopiuj
function GetDateFromUrl($link)
 {
	 if (preg_match('@^http://(www\.)?[^/]+$@i', $link)) $link .= '/';

	 global $date;
   $date = '';
   $link = parse_url($link);
   
   $path = (!empty($link['path'])) ? $link['path'] : '/';
	 $path .= (!empty($link['query'])) ? '?' . $link['query'] : '';
	 
	 //$header =  'HEAD '.$path.' HTTP/1.0\r\n';  //tylko nagłówek
   $header  = 'GET '.$path.' HTTP/1.0'."\r\n";
   $header .= 'Host: '.$link['host']."\r\n";
   $header .= 'Content-type: application/x-www-form-urlencoded'."\r\n";
   $header .= 'User-Agent: twardy_bot/1.0 (http://inteco.win.pl)'."\r\n";
   $header .= 'Content-length: 0'  . "\r\n\r\n";
	 //$header .= 'Connection: close\r\n\r\n'; //tylko nagłówek
   
	 if ($of = @fsockopen($link['host'], (isset($link['port']) ? $link['port'] : 80), $err_num, $err_msg, 60)) 
	 {
		 fputs($of, $header);
     while (!feof($of))
		 {
       if (!$date .= fgets($of,10000))
       {
         fclose($of);
         return false;
       }

     }
     
     fclose($of);

     if (!preg_match('/^HTTP\/1.. 200/i',$date))
     {
       if (preg_match('/^HTTP\/1.. 30\d/i',$date) && preg_match('@^Location:\s+(http://.+)$@mi', $date, $rn))
			 {
			   return GetDateFromUrl(rtrim($rn[1]));
			 }
			 
			 return false;
     }
   
   } else return false;
   
	 $date = preg_replace('@^.+?(\r\n\r\n|\n\n)@si','',$date);
   return true;
   
 }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.