[PHP] file_get_contents lukt niet met url

Pagina: 1
Acties:
  • 208 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Sinds een paar dagen werkt dit script niet meer:

code:
1
2
3
4
5
<?php 
$filename = "http://www.iets.be/iets.txt"; 
$contents = file_get_contents($filename);
echo $contents;
?>


Maar dit wel:

code:
1
2
3
4
5
<?php 
$filename = "iets.txt"; 
$contents = file_get_contents($filename);
echo $contents;
?>


http://www.iets.be/iets.txt is gewoon toegankelijk via een browser. Ik begin nu te twijfelen, maar volgens mij heeft dit script maanden gewerkt en ik denk dat mijn provider iets veranderd heeft. Maar vermits ik maar geen antwoord krijg probeer ik het hier al eens. Is er een andere maniet om een extern bestandje uit te lezen? Nu krijg ik dus steeds de volgende error:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.


Server draait PHP 4.4 onder Windows 2003 Server.
Alvast bedankt!

[ Voor 3% gewijzigd door Verwijderd op 05-11-2006 18:44 ]


Acties:
  • 0 Henk 'm!

  • wica
  • Registratie: Februari 2002
  • Laatst online: 21-02 09:21

wica

De duivel jacht op me

Ik denk dat er een ini setting veranderd is. Zodat je in dingen als fopen geen url meer kan gebruiken.

Dit is vooral gedaan vanwege beveiliging. Je kan door url te gebruiken te gemakkelijk code binnen halen van een andere site.

Als je url's wilt blijven gebruiken, kan je het aanpassen in je php ini.

Of anders een functie zoals deze gebruiken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function geturl($url) {
    //  $useragent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1;)";
    $useragent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko Firefox/1.5";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPGET,1);
    curl_setopt($ch, CURLOPT_POST,0);
    curl_setopt($ch, CURLOPT_VERBOSE,0);
    curl_setopt($ch, CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  0);
    curl_setopt($ch, CURLOPT_USERAGENT,$useragent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    // Check if we need SSL
    if(preg_match('/^https/', $url)){
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    }

    $result = curl_exec($ch);

    $err = curl_error($ch);
    if ($err<>"") {
        pr("Error: " . $err . "<br><br>","geturl(".$url.")");
        return false;
    }
    curl_close($ch);
    return $result;
}



/edit
url naar de ini setting http://be2.php.net/manual...m.php#ini.allow-url-fopen

[ Voor 88% gewijzigd door wica op 05-11-2006 18:50 ]

RFC | The Linux Document Project | gentoo.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Werkt perfect! Bedankt!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even nog een vraagje aan iedereen hier. Is het normaal dat een provider dit zomaar veranderd? Ik heb heel mijn support site kunnen herschrijven doordat zij dit zonder verwittiging veranderen... Ik overweeg om op te stappen (ook vanwege andere problemen daar).

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Verwijderd schreef op zondag 05 november 2006 @ 21:09:
Even nog een vraagje aan iedereen hier. Is het normaal dat een provider dit zomaar veranderd? Ik heb heel mijn support site kunnen herschrijven doordat zij dit zonder verwittiging veranderen... Ik overweeg om op te stappen (ook vanwege andere problemen daar).
Het lijkt me normaal dat een provider je op de hoogte brengt van veranderingen. In de praktijk wil dit alleen nog weleens tegenvallen :| Je zou ze natuurlijk even kunnen bellen, misschien hebben ze per ongeluk die instelling gewijzigd bij een upgrade naar een nieuwere versie van php ofzo.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Misschien sowieso tijd een andere hoster te zoeken als ze PHP nog steeds als CGI binary draaien in plaats van de stabielere en geadviseerde SAPI-module.

Maar waarschijnlijk is allow_url_fopen disabled, of blokkeerd een firewall de uitgaande verbinding.

[ Voor 17% gewijzigd door frickY op 06-11-2006 09:17 ]

Pagina: 1