[PHP] In te lezen bestand leeg?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Een vreemd probleem, voor mij althans. De XML-parser geeft sinds kort een foutmelding bij het lezen van een XML-bestand. Ik wil nu, in een poging de oorzaak te achterhalen, de inhoud van het bestand weergeven op het scherm.

Het vreemde is nu dat het te openen bestand wel geopend kan worden maar deze blijkbaar geen inhoud heeft. Probeer ik het zelfde bestand via een teksteditor te openen dan zie ik enkele KB's aan informatie staan.

Iemand een idee waarom PHP dit bestand niet kan inlezen? Permissies e.d. staan goed.

code:
1
2
3
4
5
6
7
// File uitlezen
if ($xmlhandle = fopen ($xmlfilename, "rb"))
{
   $xmlcontents = fread ($xmlhandle, filesize ($xmlfilename));
   fclose ($xmlhandle);
   echo "<HR>$xmlcontents</HR>";
} else { echo "Kan bestand niet openen"; }

Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
En nog iets vreemds... Op het moment dat het zelfde bestand middels het copy(bron,doel); gekopieerd wordt is het doel bestand 0 bytes groot.

Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 23:29
Zijn je rechten wel in orde? En wat is dan die foutmelding?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Vanaf php versie 4.3.0 is er de functie file_get_contents, lukt het dan wel (Dus zonder fopen/fread)?

Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Het te lezen bestand heeft de juiste rechten. Het rare is dat het tot een aantal dagen geleden zonder problemen werkte maar van het ene op het andere moment is dit ontstaan.

Bovenstaande functie werkt overigens ook niet...

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
Timmy schreef op woensdag 20 april 2005 @ 14:21:
Het te lezen bestand heeft de juiste rechten. Het rare is dat het tot een aantal dagen geleden zonder problemen werkte maar van het ene op het andere moment is dit ontstaan.

Bovenstaande functie werkt overigens ook niet...
Je weet zeker dat PHP het bestand kan vinden?
PHP:
1
2
3
if( file_exists( $xmlfilename ) ){
echo( 'bestand bestaat' );
}

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Huppie schreef op woensdag 20 april 2005 @ 14:26:
Je weet zeker dat PHP het bestand kan vinden?
Inderdaad, het bestand kan zelfs geopend worden maar schijnbaar is er vervolgens geen inhoud te bekennen.

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
Timmy schreef op woensdag 20 april 2005 @ 14:28:
[...]

Inderdaad, het bestand kan zelfs geopend worden maar schijnbaar is er vervolgens geen inhoud te bekennen.
En wat zegt een filesize()?

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

En die enkele KB's aan informatie is ook daadwerkelijk tekst? Er zit hier niet bijvoorbeeld een EOF in?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
0 bytes.
En da's het geen wat mij het meeste verbaast. Het bestand is namelijk ruim 12 KBs groot, heeft de juiste permissies, eigenaar en is gewoon te lezen via een editor.

Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Creepy schreef op woensdag 20 april 2005 @ 14:34:
En die enkele KB's aan informatie is ook daadwerkelijk tekst? Er zit hier niet bijvoorbeeld een EOF in?
Het is allemaal tekst, XML om precies te zijn.

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
PHP:
1
2
3
echo ini_get( 'allow_url_fopen' );
echo ini_get( 'safe_mode' );
echo ini_get( 'open_basedir' );

Ennn die 3?
If PHP has decided that filename specifies a local file, then it will try to open a stream on that file. The file must be accessible to PHP, so you need to ensure that the file access permissions allow this access. If you have enabled safe mode, or open_basedir further restrictions may apply.

If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen is enabled. If it is switched off, PHP will emit a warning and the fopen call will fail.

[ Voor 82% gewijzigd door Huppie op 20-04-2005 14:42 ]

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Alleen echo ini_get('allow_url_fopen'); geeft een waarde 1 terug. Lijkt mij goed, niet?

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
Klikt goed inderdaad ;)

Mag ik een voorbeeld $xmlfilename van je?
Ik wil natuurlijk weten of je dirs in gaat, slashes of backslashes gebruikt, een url of een relatief path opgeeft etc etc :D

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

Verwijderd

filesize over http werkt waarschijnlijk niet (weet niet of je dat probeerd), probeer eens
$xmlcontents = join('', file($xmlfilename ));

en waarom een fopen rb? is je bestand binary? Volgens mij is XML ascii based

Nog iets,
http://nl3.php.net/filesize
Note: The results of this function are cached. See clearstatcache() for more details.

[ Voor 27% gewijzigd door Verwijderd op 20-04-2005 15:53 ]


Acties:
  • 0 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 21:04
Dank iedereen voor het meedenken :)

Het probleem is opgelost. Het bleek niet, zoals ik eigenlijk al dacht, een programmeerfout te zijn maar een probleem met de server. De oude harde schijf vervangen door een nieuw exemplaar was de truc :D
Pagina: 1