2011-07-01 13 views
7

Używam file_get_contents na moim PHP i rzuca pewne błędy:file_get_contents() Błąd

Mój kod

#try to fetch from remote 
$this->remotePath = "http://some-hostname.com/blah/blah.xml 
$fileIn = @file_get_contents($this->remotePath); 

błędów:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /virtual/path/to/file/outputFile.php on line 127 

Warning: file_get_contents(https://some-host-name/data/inputFile.xml) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /virtual/path/to/file/outputFile.php on line 127 

jakiś pomysł? Udało mi się to dobrze na moim komputerze, ale przestałem działać po przeniesieniu go na serwer WWW.

+0

Btw, ponieważ chcesz załadować xml, użyj funkcji simplexml_load_file, po ustawieniu allow_url_fopen. –

Odpowiedz

12

Twój serwer musi mieć ustawioną wartość true dla właściwości allow_url_fopen. Bycie na darmowym serwerze wyjaśnia to, ponieważ jest zwykle wyłączone, aby zapobiec nadużyciom. Jeśli zapłaciłeś za hosting, skontaktuj się ze swoim hostem, aby mógł go włączyć.

Jeśli zmiana tego ustawienia nie jest możliwa, należy przejrzeć bibliotekę cURL.

+1

Ale czy to stanowi zagrożenie dla bezpieczeństwa? –

+2

@Tanner: Najprawdopodobniej zrobiono to, aby zapobiec nadużyciom. –

+0

Czy znasz jakiś sposób obejścia tego, ponieważ ten plik pochodzi ze zdalnego serwera, a nie z mojego wewnętrznego serwera. –

4

Wygląda na to, że ustawienie "allow_url_fopen" ma wartość false na serwerze i dlatego nie zezwala na używanie adresów URL z file_get_contents().

Zamiast tego spróbuj użyć CURL, który jest lepszym i skuteczniejszym sposobem komunikowania się z innym serwerem.

Powiązane problemy