Vraag & Antwoord

Webprogrammeren & scripting

[PHP] "file_exists"

14 antwoorden
  • Ik gebruik een Image Gallery in PHP. Nu heb ik daarvan twee versies namelijk één voor een resolutie 800*600 en één voor 1024*768. Dat werkt perfect op 1 ding na: de reacties op de foto's zijn voor beide resoluties verschillend. Ik wil juist dat de reacties niet gescheiden worden, maar dat de reacties voor beide resoluties hetzelfde zijn. Het gaat om de volgende code: [code:1:aa582b9444] $p=trim($_GET['p']); $ex = substr(strrchr($p,"."),0); $pixas = substr($p, 0, strlen($p) - strlen(strstr($p,$ex))); $filename = "".$pixas.".txt"; if (!file_exists($filename) && file_exists($p)){//cheking if exists comments file touch($filename); chmod($filename,0666); } $byla=file($filename); $max = count($byla);[/code:1:aa582b9444] Ik heb dit veranderd in: [code:1:aa582b9444] $p=trim($_GET['p']); $ex = substr(strrchr($p,"."),0); $pixas = substr($p, 0, strlen($p) - strlen(strstr($p,$ex))); $folder ="http://localhost/Gallery/1024x768/"; $filename2 = "".$pixas.".txt"; $filename = "$folder$filename2"; if (!file_exists($filename) && file_exists($p)){//cheking if exists comments file touch($filename); chmod($filename,0666); } $byla=file($filename); $max = count($byla);[/code:1:aa582b9444] Dit werkt echter niet, ik krijg de volgende foutmelding:[quote:aa582b9444] Warning: touch(): Unable to create file http://localhost/Gallery/1024x768/01_001.txt because No such file or directory in /srv/localhost/Gallery/1024x768/01_2.php on line 355 Warning: chmod(): No such file or directory in /srv/localhost/Gallery/1024x768/01_2.php on line 356 Warning: file(http://localhost/Gallery/1024x768/01_001.txt): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /srv/localhost/Gallery/1024x768/01_2.php on line 358 Warning: rsort() expects parameter 1 to be array, boolean given in /srv/localhost/Gallery/1024x768/01_2.php on line 365 [/quote:aa582b9444]
  • Inmiddels krijg ik alleen nog de volgende foutmelding: [quote:644cd7cc5f] Warning: touch(): Unable to create file http://localhost/Gallery/1024x768/01_008.txt because No such file or directory in /srv/localhost/www/www.domein.nl/Gallery/800x600/01_2.php on line 355 Warning: chmod(): No such file or directory in /srv/localhost/www/www.domein.nl/Gallery/800x600/01_2.php on line 356[/quote:644cd7cc5f]
  • De fout zit 'm is het stukje [code:1:123dfff032]$folder = "http://localhost/Gallery/1024x768/"[/code:1:123dfff032] Het pad waar een bestand wordt gemaakt/gelezen wordt altijd bekeken vanaf de php executable zelf, niet vanaf de webbrowser, dus php heeft geen idee wat het met een pad als 'http://localhost/...' moet, omdat het gaat proberen de volgende map te openen: '/srv/localhost/http://locahlost/Gallery/....'. Wat je moet veranderen: je moet in de $folder variable het interne pad zetten naar de map waarin je de de foto wilt zetten. Ik denk dat dit zou moeten werken:[code:1:123dfff032]$folder = "/srv/localhost/www/www.insania.nl/Gallery/1024x768/"[/code:1:123dfff032] Je zou ook de [url=http://nl.php.net/manual/nl/function.realpath.php]realpath()[/url] functie kunnen gebruiken om het exacte pad naar een map uit te vissen. Groetjes, Vic
  • [quote:e817cf820a="Vic"]Je zou ook de [url=http://nl.php.net/manual/nl/function.realpath.php]realpath()[/url] functie kunnen gebruiken om het exacte pad naar een map uit te vissen. [/quote:e817cf820a] Bedankt Vic, nu krijg ik de foutmelding niet meer! :roll: Ik heb je raad opgevolgd en het zo gedaan: [quote:e817cf820a] $folder = realpath ("http://localhost/Gallery/1024x768/"); $filename2 = "".$pixas.".txt"; $filename = "$folder" . "$filename2"; [/quote:e817cf820a] Alleen werkt het nu nog steeds niet... :-? Ik krijg weliswaar geen foutmelding meer, maar toch worden de reacties voor beide resoluties verschillend weergegeven. Het ligt, denk ik, niet aan bovenstaande code, maar aan de volgende code verder op de pagina: [quote:e817cf820a] // show comments for ($u=$startas; $u<$endaz; $u++){ $infa = explode("|",$byla[$u]); $infa[3] = wordwrap( $infa[3], 95, "\n", 1); $html.=' <table class="table_border" width="300" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td align="left" class="comments_up" >'.$lang["name"].' : '; if ($infa[2]!==''){$html.= '<a href="mailto:'.$infa[2].'">'.$infa[1].'</a>';} else $html.= $infa[1]; $html.=' </td> </tr>'; $html.=' <tr> <td colspan="2">'.$infa[3].'<br><div align="right">'.$infa[5].'</div>'; if ($infa[6]){ $html.=' <div align="left">'.$lang["admin_name"].' :<br />'.$infa[6].'</div>'; } $html.=' </td> </tr> </table>'; }//end for [/quote:e817cf820a] Alleen snap ik hier niets van :( Ik gebruik overigens [url=http://www.hotscripts.com/jump.php?ID=28901]deze[/url] picture gallery. Wie weet raad?
  • Hmm... ik had het stukje '$folder = realpath("http://www.mijnserver.nl");' eens uitgeprobeerd op mijn lokale Apache server, maar hierbij kreeg ik een vreemde, niet-kloppende directory. Ik denk daarom ook dat daarom het commentaar niet goed gelezen wordt. Je zou ook [code:1:eb30ea67e4]$folder = realpath(".");[/code:1:eb30ea67e4]kunnen gebruiken, dan bevat $folder het exacte pad naar de map waarin je script loopt. Groetjes, Vic
  • [quote:ff2152a0a6="Vic"] Je zou ook [code:1:ff2152a0a6]$folder = realpath(".");[/code:1:ff2152a0a6]kunnen gebruiken, dan bevat $folder het exacte pad naar de map waarin je script loopt.[/quote:ff2152a0a6] Bedankt voor je reactie, maar ik wil juist dat $folder het exacte pad naar een andere map dan de map waarin het script loopt bevat! Het script loopt namelijk in de map 800x600, maar ik wil dat $folder het exacte pad naar de map 1024x768 bevat. :roll: Ik hoop dat je hiermee iets kunt. Wederom alvast bedankt!
  • Misschien moet je werken met $_SERVER["DOCUMENT_ROOT"]...? - Bas
  • Als je eventjes post hoe de directory structuur in elkaar zit, maak ik wel even dat script je voor je :) Iets als [code:1:8ad5d706d4] [+] Mijn map | -- Mijn submap | -- Mijn submap2 [/code:1:8ad5d706d4] zou prima zijn. Groetjes, Vic
  • Ok, alvast bedankt iig! :) Hier is 'ie: [code:1:c6cf3dfa7f] [+] www.domein.nl | [+] Gallery | [+] 1024x768 (naar deze map moet het script verwijzen) [+] 800x600 ( in deze map draait het script) [/code:1:c6cf3dfa7f] En hier in 'URL-taal': http://www.domein.nl/Gallery/1024x768/ http://www.domein.nl/Gallery/800x600/script.php
  • Ik denk dat dit moet werken: [code:1:d59512fd52]$folder = realpath('./../1024x768');[/code:1:d59512fd52] Groetjes, vic
  • [quote:74ce4163a1="Vic"]Ik denk dat dit moet werken: [code:1:74ce4163a1]$folder = realpath('./../1024x768');[/code:1:74ce4163a1] [/quote:74ce4163a1] Bedankt voor je reactie, maar dat werkt ook niet. :( Andere suggesties? @ BasHamar: wat bedoel je met: $_SERVER["DOCUMENT_ROOT"] Thnx alvast allemaal!
  • Probeer dit anders eens:[code:1:bf09c0586e]$folder =$_SERVER["DOCUMENT_ROOT"]."/Gallery/1024x768/"; $filename2 = "".$pixas.".txt"; $filename = $folder.$filename2;[/code:1:bf09c0586e]Misschien dat je de eerste slash (voor "Gallery") moet verwijderen, maar dat is een kwestie van proberen. - Bas
  • [quote:ba21066875="BasHamar"]Probeer dit anders eens:[code:1:ba21066875]$folder =$_SERVER["DOCUMENT_ROOT"]."/Gallery/1024x768/"; $filename2 = "".$pixas.".txt"; $filename = $folder.$filename2;[/code:1:ba21066875]Misschien dat je de eerste slash (voor "Gallery") moet verwijderen, maar dat is een kwestie van proberen. - Bas[/quote:ba21066875] Bedankt voor je hulp. Het moest met een slash, want zonder kreeg ik een foutmelding. Het werkt echter ook niet met slash, ik krijg weliswaar geen foutmelding, maar het heeft geen resultaat. De reacties worden niet getoond. Er staat onder de afbeelding wel "Reacties: 1", maar als je dan naar de reacties toegaat, zie je geen reacties in beeld. Ik denk dat het dus aan het volgende gedeelte van het script ligt: [code:1:ba21066875]// show comments for ($u=$startas; $u<$endaz; $u++){ $infa = explode("|",$byla[$u]); $infa[3] = wordwrap( $infa[3], 95, "\n", 1); $html.=' <table class="table_border" width="300" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td align="left" class="comments_up" >'.$lang["name"].' : '; if ($infa[2]!==''){$html.= '<a href="mailto:'.$infa[2].'">'.$infa[1].'</a>';} else $html.= $infa[1]; $html.=' </td> </tr>'; $html.=' <tr> <td colspan="2">'.$infa[3].'<br><div align="right">'.$infa[5].'</div>'; if ($infa[6]){ $html.=' <div align="left">'.$lang["admin_name"].' :<br />'.$infa[6].'</div>'; } $html.=' </td> </tr> </table>'; }//end for [/code:1:ba21066875]
  • Zoek even op waar [i:b4ff0b4e62]$byla[/i:b4ff0b4e62] vandaan komt, daar lijken de reacties in te staan. - Bas

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.