Erik B. Skrevet 30. desember 2006 Del Skrevet 30. desember 2006 (endret) Hei, jeg holder på med mitt eget bildegalleri, er forsåvidt ferdig med alt, men har et problem med opplastingsscriptet jeg har laget. Scriptet fungerer akkurat slik det skal når jeg kjører det på localhost, men når jeg kjører scriptet på serveren jeg bruker online fungerer ikke ting som det skal. Når man laster opp et bilde skal bildet bli resizet, både til en mellomstor versjon og en thumb versjon. Dette fungerer slik som det skal når scriptet kjøres lokalt, men når jeg legger det opp på serveren min blir enten ikke bildet lastet opp i det hele tatt, og vis det blir lastet opp blir det ikke resizet. Serveren hvor scriptet ikke fungerer på er en one.com server. Jeg legger ut scriptet slik at dere kan se etter om det er noen bugs som bør rettes opp i som fører til at scriptet leses riktig av PHP-versjonen på denne serveren også. Har husket å CHMODE mappene på serveren. Her kommer scriptet: Klikk for å se/fjerne innholdet nedenfor <?php include("config.php"); //Her innloggingsinformasjon til databasen osv... //Variabler som får informasjon om hvilket bilde og mappe man vil laste opp $LastoppKnapp=$_POST['lastOpp']; $OpplastBilde=$_FILES['opplastBilde']['name']; $OpplastMappe=$_POST['valgtOpplast']; $NyttAlbum=$_POST['nyttAlbum']; $NyttAlbumKnapp=$_POST['opprettAlbum']; $AlbumBilde=$_FILES['opplastBilde']['name']; $AlbumBildeTemp=$_FILES['opplastAlbumbilde']['tmp_name']; $AlbumTemp=$_FILES['opplastBilde']['tmp_name']; $ValgtAlbumBilde=$_POST['valgtAlbumBilde']; $AlbumBildeKnapp=$_POST['lastoppAlbumbilde']; $AlbumBildePossisjon="ErixzoneGalleri/Thumbs/AlbumThumb_" . "$AlbumBilde"; $AlbumBildeStore="ErixzoneGalleri/Store/"."$AlbumBilde"; //Dette skjer dersom man trykker på legg til albumbilde if (isset($AlbumBildeKnapp)) { $sql="UPDATE mapper"; $sql.=" SET bilde='$AlbumBilde' WHERE tittel='$ValgtAlbumBilde'"; mysql_query($sql, $oppKoble) or die ("Kunne ikke legge til bilde til albumet ... "); //Bildenavn legges til i database echo "$AlbumBilde ble lagt til i $ValgtAlbumBilde"; move_uploaded_file($AlbumBildeTemp, $AlbumBildePossisjon) or die ("Kunne ikke kopiere fil: " . "$FilError"); $filename = "$AlbumBildePossisjon"; $width = 120; $height = 120; list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // Resample $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); imagejpeg($image_p, $AlbumBildePossisjon, 100); //...Og thumb blir laget } //Dersom man lager et nytt album skjer dette if (isset($NyttAlbumKnapp)) { $sql="INSERT INTO mapper"; $sql.=" (bilde, opprettet, tittel)"; $sql.=" VALUES"; $sql.=" ('tom.jpg', '$dato', '$NyttAlbum')"; mysql_query($sql, $oppKoble) or die ("Kunne ikke legge ti l album"); } //Dersom man vil laste opp et nytt bilde til et av galleriene skjer dette... if (isset($LastoppKnapp)) { $sql="INSERT INTO bilder"; $sql.=" (mappe, bilde)"; $sql.=" VALUES"; $sql.=" ('$OpplastMappe', '$OpplastBilde')"; mysql_query($sql, $oppKoble) or die ("Kunne ikke legge til bilde i galleri"); //Navn legges til i databasen move_uploaded_file($AlbumTemp, $AlbumBildeStore) or die ("Kunne ikke kopiere fil: " . "$FilError"); if (strstr($FilType, "jpeg")){ echo "Bildet ble lastet opp, ingen problem ey"; } $filename = "$AlbumBildeStore"; $width = 600; $height = 600; list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // Resample $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); imagejpeg($image_p, $AlbumBildeStore); //Bildet blir resizet til en mindre versjon //THUMBS $filename = "$AlbumBildeStore"; $width = 120; $height = 120; list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // Resample $thumbs="ErixzoneGalleri/Thumbs/" . "$AlbumBilde"; $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); imagejpeg($image_p, $thumbs, 100); echo "Bilde lastet opp!"; //... Og thumbs lages } ?> FORMS::: <form enctype="multipart/form-data" method="post" action=""> <table width="379" border="0"> <tr> <td width="102">Last opp bilde: </td> <td width="261"> <input name="opplastBilde" type="file"> </td> </tr> <tr> <td>Velg et album: </td> <td><select name="valgtOpplast"> <option value=''> --- Velg et album --- </option> <?php // HENTER UT albumer fra databasen og lister opp ... $sql="SELECT tittel FROM mapper"; $res=mysql_query($sql, $oppKoble); while ($mapper=mysql_fetch_array($res)) { $mappene=$mapper['tittel']; echo "<option value='$mappene'>$mappene</option>"; } ?> </select> </td> </tr> <tr> <td>Lag et nytt album: </td> <td><input type="text" name="nyttAlbum"> <input type="submit" name="opprettAlbum" value="Opprett nytt album"></td> </tr> <tr> <td>Legg til albumbilde: </td> <td><input name="opplastAlbumbilde" type="file"> <select name="valgtAlbumBilde"> <option value=''> --- Velg et album --- </option> <?php $sql="SELECT tittel FROM mapper"; $res=mysql_query($sql, $oppKoble); while ($mapper=mysql_fetch_array($res)) { // HENTER UT albumer fra databasen og lister opp ... $mappene=$mapper['tittel']; echo "<option value='$mappene'>$mappene</option>"; } ?> </select></td> </tr> <tr> <td> </td> <td><input type="submit" name="lastOpp" value="Last opp bilde"><input type="submit" name="lastoppAlbumbilde" value="Legg til albumbilde"></td> </tr> </table> </form> <?php mysql_close(); ?> Takk for all hjelp Endret 31. desember 2006 av erixz Lenke til kommentar
ZoRaC Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Får du noen feilmeldinger? Første tankene som slår meg er at: 1. GD ikke er installert, eller at det er en gammel versjon som ikke støtter alle funksjoner du bruker 2. At minne-begrensninger eller noe sånt hindrer deg i å laste opp bildet (du kan prøve med et lite bilde og se om det går) Prøv dette: <?php if (function_exists("imagecreatetruecolor")) echo "Støtte for imagecreatetruecolor"; else echo "Ikke støtte for imagecreatetruecolor"; ?> Kjør den, da ser du om serveren støtter den funksjonen (PHP 4.0.6 eller PHP5). Merk også: "Note: This function requires GD 2.0.1 or later (2.0.28 or later is recommended). Note: This function will not work with GIF file formats. " Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 (endret) Fant akkurat ut at det er noe gale med inkluderingsscriptet jeg bruker. Hva er den beste måten å inkludere sider på? Slik ser inkluderingen av sider jeg bruker ut nå: $mappe="sider"; $url = $_GET['erxz']; switch ($url) { case "1": include "$mappe/main.php"; break; case "2": include "$mappe/skriv.php"; break; case "3": include "$mappe/login.php"; break; case "4": include "$mappe/linkpart.php"; break; case "5": (osv ....) default: include "$mappe/main.php"; } ?> Takk for svar EDIT: ImageTrueColor er støttet på serveren Endret 31. desember 2006 av erixz Lenke til kommentar
ZoRaC Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Er vel en grei måte å gjøre det på det der? Evnt sette $mappe = "/full/path/til/sider/"; for da slipper du trøbbel med at det ikke virker skikkelig i subdirectories. Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 Men hva i inkluderingsscriptet er det som kan gjøre slik at ikke opplastingen fungerer da montro? Lenke til kommentar
ZoRaC Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Sikker på at det er der feilen ligger da? Den inkluderer jo "$mappe/main.php", men det har vel ikke noe å si? Prøv å sett "ini_set('display_errors', 1);" øverst i scriptet, se om du får noen feilmeldinger da...? Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 (endret) Fikk følgende feilmelding: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /customers/erixzone.net/erixzone.net/httpd.www/index.php:2) in /customers/erixzone.net/erixzone.net/httpd.www/index.php on line 2 EDIT: denne forsvant igjen da jeg fjernet en unødvendig linjebrytning. forstår ingenting, jeg Endret 31. desember 2006 av erixz Lenke til kommentar
ZoRaC Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 (endret) Man kan ikke sende noe som helst før session_start(), da får man den feilen... Endret 31. desember 2006 av ZoRaC Lenke til kommentar
loathsome Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Hørt om kommentarer? Skal vi virkelig sitte å gjette oss til hva linje for linje gjør? Fiks scriptet ditt med innrykk og kommentarer, så skal jeg vurdere å se på det. Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 Ja jeg har hørt om kommentarer Har lagt det til nå i første post. En viktig detalj som forusaker problemer er at den ikke vil hente informasjon fra variabler som inneholder informasjon om hvilken fil jeg laster opp. Denne variabelen funger for eksempel ikke: $OpplastBilde=$_FILES['opplastBilde']['name'] Men den fungerer lokalt. Det fungerer også om jeg kjører scriptet utenfor inkluderingsscriptet. Mystisk! Lenke til kommentar
Stian Jacobsen Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Skal innrømme at jeg ikke gadd å lese hele koden din, men her er noen ting du kan sjekke.. 1. Har serveren støtte for GD, noen bruker å disable gd.. ikke spør hvorfor 2. Kjører du din lokale server på windows? Mulig at den severen du leier er linux da er det forskjell på bane/til/mappe og bane\til\mappe 3. Noen servere krever full bane Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 2. Kjører du din lokale server på windows? Mulig at den severen du leier er linuxda er det forskjell på bane/til/mappe og bane\til\mappe 7613746[/snapback] Dette er et interessant punkt. PC'en min kjører windows, mens serveren jeg leier hos one.com kjører følgende: 2.9.1.1-Debian-1.one.com1 Altså linux debian? Lenke til kommentar
Ståle Skrevet 31. desember 2006 Del Skrevet 31. desember 2006 Ja. Sikker på at du ikke har noen \ i koden din istedenfor / ? \ brukes av win, mens / er linux. Lenke til kommentar
Erik B. Skrevet 31. desember 2006 Forfatter Del Skrevet 31. desember 2006 (endret) Jeg tror jeg vet hva som er gale! Når jeg laster opp bilder med $_FILES vil jo banen til filen bli f.eks C:\mappene\til\bildene\etBilde.jpg Vil det ikke? Da blir jo dette feil i linux. Det er jo dette som er problemet, at variablene med $_FILES innhold ikke fungerer på one.com serveren! Endret 31. desember 2006 av erixz Lenke til kommentar
Erik B. Skrevet 1. januar 2007 Forfatter Del Skrevet 1. januar 2007 Tenker jeg rett da eller? I så fall, skal jeg bare bruke en str_replace funksjon eller hva det enn heter? Vil så gjerne finne ut av dette! Lenke til kommentar
ZoRaC Skrevet 1. januar 2007 Del Skrevet 1. januar 2007 Er vel heller at du bør bruke fulle baner: $AlbumBildePossisjon="/full/bane/her/ErixzoneGalleri"; (på alle sammen) Lenke til kommentar
Erik B. Skrevet 1. januar 2007 Forfatter Del Skrevet 1. januar 2007 Men mappen "ErixzoneGalleri" ligger på samme sted som index filen. Mens filen som inkluderes ligger i en annen mappe. Hva blir da banen? Blir det slik? /../ErixzoneGalleri/ Slik er mappene satt opp: index.php inkluderingsFiler.php <- Her er det oversikt over filene som skal inkluderes. mapper <- I denne mappen ligger alle filene som inkluderes, blant annet opplastingsscriptet. ErixzoneGalleri <- Inneholder også subfolderene "Store" og "Thumbs" Hvordan skal da banen til ErixzoneGalleri bli? Lenke til kommentar
ZoRaC Skrevet 1. januar 2007 Del Skrevet 1. januar 2007 Jeg ville brukt fulle baner for sikkerhetsskyld... Legg dette i en fil i "ErixzoneGalleri": <?php echo get_cwd(); ?> Så kjører du den og da får du opp banen du skal bruke. Lenke til kommentar
Erik B. Skrevet 1. januar 2007 Forfatter Del Skrevet 1. januar 2007 Da får jeg opp: /customers/erixzone.net/erixzone.net/httpd.www/ErixzoneGalleri / Men om jeg bruker hele den linjen som bane får jeg opp at mappene ikke finnes. Hvilken del av det skal jeg bruke? Lenke til kommentar
Erik B. Skrevet 1. januar 2007 Forfatter Del Skrevet 1. januar 2007 Pussig, nå fungerer alt plutselig når jeg skiftet banen tilbake til ErixzoneGalleri/ gjorde ingenting MEN nå har det oppstått et nytt problem, dersom jeg laster opp store bilder får jeg følgende beskjed: Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 2496 bytes) in /customers/erixzone.net/erixzone.net/httpd.www/erixz/lastopp_galleri.php on line 104 Går det på en eller annen måte å senke minnebruken i scriptet? Må bare takke der for all hjelp forløbig, spesielt Zorac! Håper dere hjelper meg med å løse det nye problemet også! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå