[PHP]Filesize() op bestaand bestand geeft 'No such file'

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik heb een eigen gallery geschreven, die uit een database een id, naam, locatie en grootte haalt. De locatie is puur de bestandsnaam, de grootte is bepaald door $_FILES['picture']['size'].

Nu komt het probleem: ik wil als extra beveiliging de afbeelding éérst op zijn grootte checken voordat ik hem echo (omdat de betreffende folder 777 gechmod is). Dit doe ik met het volgende stukje code:
PHP:
1
2
3
4
5
if(filesize(baseUrl.galleryStorage.$location)==$size){
  echo '<a href="'.baseUrl.galleryStorage.$location.'" title="'.$name.'">
  <img src="'.baseUrl.galleryStorage.'thumbs/'.$location.'" alt="'.$name.'">
  </a>';
}
Het moet dus duidelijk zijn dat de thumbs in een submap thumbs/ staan met dezelfde naam. De filesize() checkt de grootte van het orginele bestand.

Het vreemde is, is dat er een E_WARNING terugkomt van php:

Warning: filesize(): Stat failed for http://juriansluiman.nl/gallery2/phpo4bqtB1157986167.jpg (errno=2 - No such file or directory) in /home/jurian/domains/juriansluiman.nl/public_html/includes/gallery.class.php on line 78

Het linkje werkt echter wel (klik maar). Hoe kan dit? De locatie van het bestand bestaat wél, omdat je dat plaatje gewoon kan zien. Echter php niet :?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Zie http://nl3.php.net/manual...m.php#ini.allow-url-fopen


Misschien sowieso verstanding eerst met file_exists te controleren of het bestand uberhaupt bestaad, alvorens te proberen de grootte uit te lezen.

[ Voor 42% gewijzigd door frickY op 11-09-2006 21:24 ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Probeer eens met de echte filename

dus /home/jurian/domains/juriansluiman.nl/public_html/gallery2/phpo4bqtB1157986167.jpg

waarschijnlijk staat url_allow_fopen() (of zoiets) uit :)

edit:

Grom @ frickY

[ Voor 8% gewijzigd door Snake op 11-09-2006 21:26 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
^^ bedankt beide. Jullie hebben gelijk. Hier had ik nooit aan gedacht, omdat hij default op 1 staat (ja, heb wel php man doorzocht :p). Echter geeft mn phpinfo:
allow_url_fopen --> Local Value: Off --> Master Value: Off :(

En met de note van php.net:
Note: This setting can only be set in php.ini due to security reasons.
Zal ik maar ff mn hoster moeten contacten...


/edit: met een file_exists blijkt dat php de file dus ook niet ziet staan (wat wel te verwachten is). De bijgeleverde warning:
This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir.
is niet geldig, aangezien safe_mode gewoon uit staat.

[ Voor 34% gewijzigd door mithras op 11-09-2006 21:50 ]


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Mithras86 schreef op maandag 11 september 2006 @ 21:19:
Het vreemde is, is dat er een E_WARNING terugkomt van php:

Warning: filesize(): Stat failed for http://juriansluiman.nl/gallery2/phpo4bqtB1157986167.jpg (errno=2 - No such file or directory) in /home/jurian/domains/juriansluiman.nl/public_html/includes/gallery.class.php on line 78
Heb je de opmerkingen in de manual gelezen ? En dan doel ik vooral op de opmerkingen betreffende URL wrappers, en de link naar http wrapper summary. Kortom : Het gaat niet werken.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
igmar schreef op maandag 11 september 2006 @ 22:21:
[...]


Heb je de opmerkingen in de manual gelezen ? En dan doel ik vooral op de opmerkingen betreffende URL wrappers, en de link naar http wrapper summary. Kortom : Het gaat niet werken.
d:)b Ik had niet alles gelezen nee. Wat dus blijkt is dat de http wrapper wordt gerestricted door allow_url_fopen en de filesystem based wrapper niet.
De tip van Snake was dus inderdaad goed door het absolute pad van het filesystem te gebruiken. Het werkt dus nu ook :)

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Mithras86 schreef op maandag 11 september 2006 @ 22:38:
d:)b Ik had niet alles gelezen nee. Wat dus blijkt is dat de http wrapper wordt gerestricted door allow_url_fopen en de filesystem based wrapper niet.
En ook al was dat niet gerestrict : filesize() werkt dus niet op http:// links. Maar dat stond dus in de tweede link.
Pagina: 1