Avatar billede mantichora Nybegynder
17. juni 2010 - 15:01 Der er 20 kommentarer

fopen url giver 404

Jeg prøver at åbne en fil med file() funktionen, og får denne fejl:

Warning: file(http://www.domæne.dk/nyhedsboks/newsbox-export.asp?get=5) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 404 Object Not Found

Jeg har fuld adgang til serveren (en Windows 2003-server med IIS6), og allow_url_fopen er on.
At det er en 404 fejl jeg får, giver endnu mindre mening. Jeg kan kopiere url'en direkte til browseren og få den frem - den findes helt fint.
Samme kode har desuden fungeret fint før, og er først begyndt at give problemer efter en serverflytning.

Jeg har prøvet at Google, men hvor mange har problemer med "http request failed", er der næsten ingen af dem der får en 404, og i næsten alle tilfældene er det folk der har glemt at slå allow_url_fopen til.

Nogen anelse om hvad der sker? Jeg forstår ingenting.
Avatar billede aners Nybegynder
17. juni 2010 - 15:07 #1
Den 'fil' du forsøger at åbne findes ikke.

Det er muligt at "newsbox-export.asp" findes, men det er ikke det du beder om - du kan ikke inkludere på den måde, da fopen spørger filsystemet. Alternativt kan du kigge på at hente noget fra URL. Kig på include med URL wrappers.
Avatar billede repox Seniormester
17. juni 2010 - 15:10 #2
Det er ikke nemt at komme med nogen bud på løsninger, når vi hverken må se kode eller den URL du du beder om.

Du vil sikkert kunne få et relativt brugbart bud eller en løsning hvis du kom med nogle oplysninger.
Avatar billede mantichora Nybegynder
17. juni 2010 - 15:31 #3
Koden ser sådan ud:
$news = file('http://www.domæne.dk/nyhedsboks/newsbox-export.asp?get=5');

- Det er alt der er til den. Senere bliver indholdet så udskrevet, men det er jo irrelevant. Jeg kan garantere at filen er hvor den er. Jeg kan som sagt kopiere den sti direkte ind i en browser, og den findes helt fint.

- Og nej, aners. Fopen/file virker helt fint med URLs, så længe allow_url_fopen er slået til. Den virker ikke kun med filsystemer.

Ellers tak for det.
Avatar billede repox Seniormester
17. juni 2010 - 15:34 #4
#3
Som sagt - du kan ikke få nogen hjælp når du ikke vil komme med nogen oplysninger.

Du kan til gengæld få et tip om at anvende cURL istedet; de fleste udbydere har installeret cURL på systemet og er et langt bedre alternativ til at hente eksterne data over HTTP end fopen nogensinde bliver.
Avatar billede mantichora Nybegynder
17. juni 2010 - 15:46 #5
Jamen hvad er det for oplysninger du vil have? Nævn dem meget gerne.

Der er ingen udbyder indblandet her, af andet end netforbindelsen - det er en privat, dedikeret server. Og ja, jeg kunne bruge cURL i stedet, det gør jeg masser af andre steder, men hvis jeg bare koder uden om denne ting, så opdager jeg garanteret andre ting senere, der ikke virker efter flytningen. Jeg vil gerne have løst problemet.
Avatar billede repox Seniormester
17. juni 2010 - 15:53 #6
Ved at udlevere den URL der er tale om, giver du mig og de andre mulighed for at teste den med de forudsætninger du selv giver, finde ud af hvad årsagen er til at du ikke kan få det til at lykkedes. At du sagtens kan kopiere URL'en og få det til at virke i en browser, giver dig - som du selv erfarer - ikke det forventede resultat i PHP.

Jeg forstår ikke den problematik du beskriver med at kode 'udenom'? Hvilke ting skulle ikke virke efter hensigten ved at skifte din file() funktion ud med en cURL hentning?
Avatar billede Slettet bruger
17. juni 2010 - 19:17 #7
Måske har din browser adgang (vha. en cookie) men din server(fopen) ikke
- prøv om du kan åbne den med en anden browser
Avatar billede repox Seniormester
18. juni 2010 - 08:23 #8
#7
Det ville være en ulogisk udledning baseret på serverens svar; at returnere HTTP 404, hvis man ikke opfylder givne kriterier for at se indholdet, giver ingen umiddelbar mening. En 403 eller 200 ville give mere mening, i sådan et tilfælde.
Avatar billede mantichora Nybegynder
18. juni 2010 - 08:57 #9
@repox: Jamen gerne, hvis du tror det gør nogen forskel, så er den rigtige URL denne:
http://www.byggeri.dk/nyhedsboks/newsbox-export.asp?get=5

- Og ja, 404'eren er det mest underlige. Jeg kunne bedre forstå det hvis jeg fik en 403.

Mht. problematikken ved at kode udenom, så er det at firmaet har en masse websider med en million dårligt kodede og rodede undersider fra før min tid, og hvis jeg ikke får dette til at virke, vil der garanteret være en masse andre sider med samme fejl, som jeg ikke lige har fundet. Desuden vil jeg gerne have det til at virke - det er trods alt en hurtigere løsning, når man ikke har brug for cURL.

Men tak for input.
Avatar billede repox Seniormester
18. juni 2010 - 09:07 #10
#9
Det virker helt fint for mig, med dit eget forslag - både lokalt og på min egen server: http://err0r.dk/test/news.php

Problemet må ligge et andet sted end i din kode.
Avatar billede mantichora Nybegynder
18. juni 2010 - 14:08 #11
Jeg ved netop godt koden virker - det gjorde selvsamme kode også før vi flyttede serveren. Jeg er bare fuldstændig tom for idéer til, hvad det så kan være.
Avatar billede repox Seniormester
18. juni 2010 - 14:13 #12
Kodemæssigt kan vi ikke gøre mere - det må være et serverproblem; kan du fange siden med wget?
Avatar billede mantichora Nybegynder
18. juni 2010 - 15:03 #13
--2010-06-18 15:00:46--  http://www.byggeri.dk/nyhedsboks/newsbox-export.asp?get=5
L°ser www.byggeri.dk...80.82.96.178
Connecting to www.byggeri.dk|80.82.96.178|:80... forbundet.
HTTP foresp°rgsel sendt, afventer svar... 200 OK
Lµngde: 206 [text/plain]


- En 200 OK. Giver ingen mening. Og det kan ikke engang være file permissions der er noget galt med, når du kunne hente filen på samme måde fra din maskine. Jeg er helt blank her :(
Avatar billede repox Seniormester
18. juni 2010 - 15:09 #14
Virker det alene med det eksempel jeg lavede? Hvis ikke, så bliver det svært at debugge uden at have shell adgang. Jeg er løbet tør for idéer som kan løses ved at teste med kode.

Det kunne dog være interessant at vide om du også vil få en 404 hvis du anvendte cURL i scriptet - omend ikke, så bare for at prøve at se om det er PHP der slet ikke gider noget... (selvom jeg dog tvivler)
Avatar billede mantichora Nybegynder
22. juni 2010 - 14:03 #15
Med cURL får jeg nøjagtig samme fejl - en 404.

Kører jeg den samme fil fra min lokale Apache-installation, virker den derimod fint. Jeg er stadig blank.
Avatar billede mantichora Nybegynder
22. juni 2010 - 14:09 #16
- Men skifter jeg URL'en der indlæses til "http://www.google.dk", så kan den også fint læse det. Det er tilsyneladende kun URLs på det domæne der er noget galt med, men samtidig også kun når de hentes FRA det domæne.
Avatar billede repox Seniormester
22. juni 2010 - 14:41 #17
Det må jo være noget internt - umiddelbart kan vi konstatere at URL kan hentes simpel vis på en PHP boks. Både hos dig og mig - dog ikke på den boks du har behov for det skal foregå på.

Hvad er resultatet af curl_getinfo()? Måske den kan komme med nogle pointers? Måske du har nogle entries i din host fil?
Avatar billede mantichora Nybegynder
22. juni 2010 - 15:09 #18
cURL-infoen:

Array (
[url] => http://www.byggeri.dk/nyhedsboks/newsbox-export.asp?get=5
[content_type] => text/html
[http_code] => 404
[header_size] => 186
[request_size] => 88
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 4040
[speed_download] => 4040
[speed_upload] => 0
[download_content_length] => 4040
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)



~

Jeg sidder og kigger på serveren, hvor vi har flere af firmaets domæner liggende (en Windows 2003 server med IIS6 - gammelt skidt).
Hvis jeg laver en fil på et af de andre domæner og forsøger at læse den med samme kode, så virker den helt fint. Det er åbenbart kun byggeri.dk jeg ikke må læse fra. Jeg har siddet og sammenlignet alle permissions og indstillinger i IIS'en, og de ser fuldstændig ens ud. HOSTS-filen er også tom.


Anyway, tak for hjælpen. Jeg tvivler desværre på det nytter at oprette spørgsmålet under servere.
Avatar billede repox Seniormester
22. juni 2010 - 15:15 #19
Hvilke headers returner curl kaldet?
Avatar billede mantichora Nybegynder
24. juni 2010 - 10:08 #20
HTTP/1.1 404 Object Not Found
Server: Microsoft-IIS/6.0
Date: Thu, 24 Jun 2010 08:14:15 GMT
X-Powered-By: ASP.NET
Connection: close
Content-Type: text/html
Content-Length: 4040


- Med mindre du har gode forslag, må du gerne smide et svar, så du kan få for din indsats. Tak for den i det mindste.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester