| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | readfile() og ikke nok hukommelse Fra : scootergrisen | 
  Dato :  11-10-10 16:20 |  
  |   
            Jeg vil gerne give en åbn/gem dialog boks når man skal downloade nogle
 filer fra min hjemmeside.
 
 For eksempel hvis man vil downloade "billed.jpg" så skal det være
 sådan at der kommer en åbn/gem dialog boks i stedet for at billedet
 vises i browseren.
 
 Af og til får jeg en fejlbesked fordi der ikke er nok hukommelse når
 jeg bruger readfile().
 PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted
 (tried to allocate 34244609 bytes)
 PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted
 (tried to allocate 15959283 bytes)
 PHP Fatal error:  Out of memory (allocated 1572864) (tried to allocate
 27328513 bytes)
 
 Er der en måde man kan gøre det på uden at skulle bruge readlfile ?
 
 Filen skal bare sendes til brugeren der er ingen grund til at hele
 filen skal læses af PHP.
  
            
             |   |   
            
        
 
            
         
           Martin Larsen (13-10-2010) 
         
	
            | Kommentar Fra : Martin Larsen | 
  Dato :  13-10-10 08:52 |  
  |  
 
            scootergrisen wrote:
 > Filen skal bare sendes til brugeren der er ingen grund til at hele
 > filen skal læses af PHP.
 Det har du ret i.
 Læg de pågældende filer i en mappe kaldet fx download og smid en 
 ..htaccess fil ned i mappen med følgende indhold:
 AddType application/octet-stream .jpg
 AddType application/octet-stream .pdf
 osv.
 Så vil man downloade filerne i stedet for at vise dem i browseren.
 http://www.phpmagicbook.com/force-file-download-do-not-display-open-in-browser/
Martin
            
              |   |   
            
        
 
            
         
           Leif Neland (13-10-2010) 
         
	
            | Kommentar Fra : Leif Neland | 
  Dato :  13-10-10 09:35 |  
  |   
            
 "Martin Larsen" <martin+spamfree+larsen@bigfoot.com> skrev i en meddelelse 
 news:4cb56526$0$23755$14726298@news.sunsite.dk...
 > scootergrisen wrote:
 >
 >> Filen skal bare sendes til brugeren der er ingen grund til at hele
 >> filen skal læses af PHP.
 >
 > Det har du ret i.
 >
 > Læg de pågældende filer i en mappe kaldet fx download og smid en .htaccess 
 > fil ned i mappen med følgende indhold:
 >
 > AddType application/octet-stream .jpg
 > AddType application/octet-stream .pdf
 > osv.
 >
 > Så vil man downloade filerne i stedet for at vise dem i browseren.
 >
 Hvis man både skal kunne vise og downloade, så kan man måske have to mapper 
 hvor der kun er den .htaccess på den ene, og så symlinke filerne mellem 
 mapperne, så de tilsyneladende, men ikke fysisk, ligger begge steder.
 
 Leif
 
 
  
            
             |   |   
            
        
 
            
         
            Martin Larsen (13-10-2010) 
         
	
            | Kommentar Fra : Martin Larsen | 
  Dato :  13-10-10 09:45 |  
  |   
            Leif Neland wrote:
 
 > Hvis man både skal kunne vise og downloade, så kan man måske have to mapper
 > hvor der kun er den .htaccess på den ene, og så symlinke filerne mellem
 > mapperne, så de tilsyneladende, men ikke fysisk, ligger begge steder.
 
 Ja, det kan man godt, og det er en udmærket ide.
 
 
  
            
             |   |   
            
        
 
            
         
           scootergrisen (13-10-2010) 
         
	
            | Kommentar Fra : scootergrisen | 
  Dato :  13-10-10 12:11 |  
  |   
            > Hvis man både skal kunne vise og downloade, så kan man måske have to mapper
 > hvor der kun er den .htaccess på den ene, og så symlinke filerne mellem
 > mapperne, så de tilsyneladende, men ikke fysisk, ligger begge steder.
 
 Ja man skal have begge muligheder.
 Kan jeg godt oprette sym links gennem en ftp client ?
 Jeg bruger windows og hjemmesiden ligger på linux.
 
 Der er vel nok noget extra vedligeholdelse når jeg skal sørge for at
 lave et nyt sym link hver gang jeg tilføjer en ny fil til download
 mappen.
 
  
            
             |   |   
            
        
 
            
         
           Leif Neland (13-10-2010) 
         
	
            | Kommentar Fra : Leif Neland | 
  Dato :  13-10-10 19:27 |  
  |   
            Den 13-10-2010 20:11, scootergrisen skrev:
 >> Hvis man både skal kunne vise og downloade, så kan man måske have to mapper
 >> hvor der kun er den .htaccess på den ene, og så symlinke filerne mellem
 >> mapperne, så de tilsyneladende, men ikke fysisk, ligger begge steder.
 >
 > Ja man skal have begge muligheder.
 > Kan jeg godt oprette sym links gennem en ftp client ?
 > Jeg bruger windows og hjemmesiden ligger på linux.
 >
 > Der er vel nok noget extra vedligeholdelse når jeg skal sørge for at
 > lave et nyt sym link hver gang jeg tilføjer en ny fil til download
 > mappen.
 >
 Du kan lave symlinks med php.
 
 Så du skal bare lave et php-script til at lave symlinks.
 
 Leif
 
 
 -- 
 Bevar P2, luk P3, der er nok P3'er i forvejen.
  
            
             |   |   
            
        
 
            
         
           Martin Larsen (13-10-2010) 
         
	
            | Kommentar Fra : Martin Larsen | 
  Dato :  13-10-10 20:51 |  
  |  
 
            scootergrisen wrote:
 > Der er vel nok noget extra vedligeholdelse når jeg skal sørge for at
 > lave et nyt sym link hver gang jeg tilføjer en ny fil til download
 > mappen.
 Nej nej, du symlinker bare hele mappen! Skal altså kun gøres én gang   
            
             |   |   
            
        
 
            
         
           scootergrisen (14-10-2010) 
         
	
            | Kommentar Fra : scootergrisen | 
  Dato :  14-10-10 13:09 |  
  |  
 
            > Nej nej, du symlinker bare hele mappen! Skal altså kun gøres én gang   
Fedt. Hvordan gør jeg så det i php ?
            
              |   |   
            
        
 
            
         
           Martin Larsen (15-10-2010) 
         
	
            | Kommentar Fra : Martin Larsen | 
  Dato :  15-10-10 09:22 |  
  |  
 
            scootergrisen wrote:
 >> Nej nej, du symlinker bare hele mappen! Skal altså kun gøres én gang   
>
 > Fedt. Hvordan gør jeg så det i php ?
 http://php.net/manual/en/function.symlink.php
symlink('images', 'download/images');
 Dette vil skabe en symbolsk lænke til images som placeres i mappen 
 download. Dvs. alt som findes i mappen images kan nu også ses i 
 download/images, men styret af den .htaccess som befinder sig i 
 downloads. Du skal først oprette mappen downloads og lave .htaccess filen.
 Mit eksempel tager som udgangspunkt at images og downloads befinder sig 
 på samme niveau som den php-fil der laver symlinket. Ellers må du 
 justere stierne lidt.
 Bemærk at det ikke er sikkert dit webhotel tillader symlinks.
 Martin
            
              |   |   
            
        
 
            
         
           scootergrisen (15-10-2010) 
         
	
            | Kommentar Fra : scootergrisen | 
  Dato :  15-10-10 13:38 |  
  |   
            Okay nu virker det vist.
 Er et symbolsk link en fil ?
 
 Jeg har min download mappe med alle filerne som kan downloades
 /download/
 
 Så har jeg lavet en ekstra mappe
 /download/dialog/
 
 også har jeg lavet et symbolsk link som linker til /download/
 /download/dialog/download/
 
 Så har jeg lavet .htaccess filen i
 /download/dialog/.htaccess
 
 Og det ser ud til at virke.
 Men så vidt jeg ved virker en .htaccess fil kun for filerne i den
 mappe.
 Altså må det symbolske link være en fil. Fordi hvis det var en mappe
 ville .htaccess filen jo ikke gælde.
 Har jeg ret ?
 
 Så et symbolsk link er måske altid en fil ligegyldigt om den linker
 til en fil eller en mappe ?
  
            
             |   |   
            
        
 
            
         
           scootergrisen (16-10-2010) 
         
	
            | Kommentar Fra : scootergrisen | 
  Dato :  16-10-10 00:24 |  
  |   
            Det virker på min egen computer som er med windows vista.
 Men jeg kan ikke få oprettet sym linket på mit webhotel som er med linux.
 
 Hvis jeg køre de her kommandoer på linux computeren...
 
 symlink('/fuldsti/download/', '/fuldsti/download/dialog/download/');
 symlink('/fuldsti/download', '/fuldsti/download/dialog/download');
 symlink('/download/', '/download/dialog/download/');
 symlink('/download', '/download/dialog/download');
 symlink('download/', 'download/dialog/download/');
 symlink('download', 'download/dialog/download');
 
 så får jeg disse fejl...
 
 Symlink(): No such file or directory
 Symlink(): No such file or directory
 Symlink(): Ingen s�dan fil eller filkatalog
 Symlink(): Ingen s�dan fil eller filkatalog
 Symlink(): No such file or directory
 Symlink(): No such file or directory
 
 Af en eller anden grund er de midterste 2 fejl på dansk.
 
 Jeg har prøvet at sætte mappe tilladelserne til 777 men det hjalp ikke.
 
 Hvordan kan det være jeg ikke kan oprette et symlink ?
 
 Også når jeg uploader det sym link jeg har på min computer så istedet 
 for at uploade sym linket så går filezilla ind i mappen og begynder at 
 oploader filerne også gør den sådan her
 
 /download/dialog/
 /download/dialog/download/dialog/
 /download/dialog/download/dialog/download/dialog/
 /download/dialog/download/dialog/download/dialog/download/dialog/
 
 Altså den bliver ved med at gå ind i sig selv. Det nok et filezilla 
 spørgsmål men måske nogen der ved det her.
 
  
            
             |   |   
            
        
 
            
         
            scootergrisen (16-10-2010) 
         
	
            | Kommentar Fra : scootergrisen | 
  Dato :  16-10-10 00:27 |  
  |   
            Kom lige i tanke om at det vil selvfølgelig ikke virke hvis jeg uploader 
 sym linket fordi det pejer jo ikke det samme sted hen på min computer 
 som på webhotellet.
  
            
             |   |   
            
        
 
            
         
           Martin Larsen (19-10-2010) 
         
	
            | Kommentar Fra : Martin Larsen | 
  Dato :  19-10-10 21:20 |  
  |   
            scootergrisen wrote:
 
 > Så et symbolsk link er måske altid en fil ligegyldigt om den linker
 > til en fil eller en mappe ?
 
 Ja selve linket er altid en fil, men i praksis virker linket som det du 
 linker til. Dvs. linker du til en fil, er det en fil, og linker du til 
 en mappe, er det en mappe du kan cd ned i osv.
 
 ..htaccess virker i den mappe den står i og nedefter indtil der evt. 
 kommer en ny .htaccess.
 
 Hvis en af de indre mapper er symlinks, virker .htaccess alligevel hvis 
 blot Options FollowSymlink er på.
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |