/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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å.

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407947
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste