[PHP] Hoe download ik een bestand?

Pagina: 1
Acties:
  • 203 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een PHP script dat vanuit een aantal verschillende http lokaties bestanden verzameld en op mijn harde schijf op moet slaan.

Dit werkt prima als het script op de lokale webserver draait, maar niet als ik het script op internet op de webserver draai.
Ik krijg dan permission denied meldingen.

Volgens mij moet er echter wel een methode zijn om dit te doen.

Wie helpt mij?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 21 oktober 2004 @ 12:49:
Ik heb een PHP script dat vanuit een aantal verschillende http lokaties bestanden verzameld en op mijn harde schijf op moet slaan.

Dit werkt prima als het script op de lokale webserver draait, maar niet als ik het script op internet op de webserver draai.
Ik krijg dan permission denied meldingen.

Volgens mij moet er echter wel een methode zijn om dit te doen.

Wie helpt mij?
Je hebt al gecheckt of je de juiste rechten hebt om bestanden op te slaan op de webserver?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Niemand, helaas.

De beheerder van de server heeft ingesteld dat PHP in Safe Mode draait, en dat betekent onder andere dat je geen netwerkverbindingen naar andere computers mag openen.

Acties:
  • 0 Henk 'm!

  • esf
  • Registratie: Juni 2002
  • Laatst online: 21-02 08:56

esf

Verwijderd schreef op 21 oktober 2004 @ 12:52:
Niemand, helaas.

De beheerder van de server heeft ingesteld dat PHP in Safe Mode draait, en dat betekent onder andere dat je geen netwerkverbindingen naar andere computers mag openen.
??
De TS heeft niet beschreven of het ligt aan het feit dat hij de bestanden niet binnen kan halen of om het probleem dat mijns inziens veel vaker voorkomt: dat hij de bestanden niet op kan slaan. Hiervoor moeten de schrijfrechten van de directory waarin de scripts draaien aangepast worden, waar Creepy ook al op aan wees.

The hardest thing in the world to understand is the income tax. - Albert Einstein


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

esf schreef op 21 oktober 2004 @ 13:11:
[...]

??
De TS heeft niet beschreven of het ligt aan het feit dat hij de bestanden niet binnen kan halen of om het probleem dat mijns inziens veel vaker voorkomt: dat hij de bestanden niet op kan slaan. Hiervoor moeten de schrijfrechten van de directory waarin de scripts draaien aangepast worden, waar Creepy ook al op aan wees.
Daarnaast als PHP in safe mode draait (zoals OneOfBorg al aangeeft) kan het betekenen dat je geen bestanden kan opslaan op het lokale filesysteem of dat je geen netwerk verbindingen mag maken.

[ Voor 7% gewijzigd door Creepy op 21-10-2004 13:14 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals het er nu naar uitziet ligt het er idd aan dat PHP in safe mode draait.
Even voor de record: het gaat om het opslaan van bestanden op het lokale file systeem...

Henk

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Wat versta jij onder 'het lokale file systeem'. Als je script op een webserver draait, dan neem ik aan dat je met 'lokaal file systeem' gewoon de schijf in de webserver bedoeld. Weet je zeker dat de directory naam klopt en dat die directory ook de juiste rechten heeft? Laat anders eens een klein stukje van je script zien waarmee je de bestanden probeert op te slaan en geef daarbij ook aan op welke regel je exact die permission denied krijgt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 21 oktober 2004 @ 13:26:
Zoals het er nu naar uitziet ligt het er idd aan dat PHP in safe mode draait.
Dat kun je makkelijk controleren. Voer phpinfo() uit en kijk of er Safe Mode On of Off staat.

Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

interessant, zit met iets soortgelijks:

heb een fotoboek applicatie draaien, gebruikers kunnen zelf fotoboeken toevoegen door ze op hun eigen server te uploaden. de thumbnailtjes worden vervolgens netjes gekopieerd (middels php copy()). een oplossing die bij vele servers al prima werkte, maar nu dus een soortgelijk vreemd probleem bij een gebruiker die een fotoboek op een van de servers van universiteit utrecht zette, waarbij eerst foto werd gekopierd, maar voor alle volgende foto's een melding 'access denied' terugkomt..

neem zelf aan dat er sprake is van een verkeerde instelling oid in de remote server, alhoewel ik dan niet kan verklaren waarom de eerste foto van het boek wel gekopieerd werd, en de rest niet (ook bij herhaling van de kopieer actie en natuurlijk met uitsluiting van het eerste bestand..)

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Allereerst: met het lokale file system bedoel ik mijn eigen pc. Ik wil dus bestanden downloaden naar mijn eigen pc.

Output phpinfo:

directive local master

safe_mode On Off
safe_mode_exec_dir /usr/local/safemode /usr/local/safemode
safe_mode_gid Off Off
safe_mode_include_dir no value no value

Acties:
  • 0 Henk 'm!

Verwijderd

Je wilt lokaal, op jouw pc, bestanden opslaan via een php bestand die op een andere server draait?

Toon anders eens een stukje code?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DIT IS WAT IK HEB:

$fp2 = fopen("C:\\test.jpg","w");
$fp = fopen("http://www.google.nl/intl/nl_nl/images/logo.gif", "rb");
if($fp){
while(!feof($fp)) {
$img = $img . fread($fp, 1024);
}
}
fwrite($fp2, $img);

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 21 oktober 2004 @ 13:46:
Allereerst: met het lokale file system bedoel ik mijn eigen pc. Ik wil dus bestanden downloaden naar mijn eigen pc.
Dat gaat dus niet lukken. Het is voor een website gelukkig niet mogenlijk dat ze zomaar op de harde schijf van de bezoeker van de site kunnen schrijven. Probeer je eens goed voor te stellen waar alles draait en hoe alle verbindingen worden gelegd. Het script wordt op de server geheel los van jou computer uitgevoerd. Het resultaat (de webpagina) van dit script wordt uiteindelijk naar jou computer gestuurd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 20:52
Verwijderd schreef op 21 oktober 2004 @ 14:00:
DIT IS WAT IK HEB:

$fp2 = fopen("C:\\test.jpg","w");
$fp = fopen("http://www.google.nl/intl/nl_nl/images/logo.gif", "rb");
if($fp){
while(!feof($fp)) {
$img = $img . fread($fp, 1024);
}
}
fwrite($fp2, $img);
En jij wilt dat die PHP bestand, gedraaid op een externe webserver, bestanden wegschrijft op JOUW lokale filesysteem? Dat gaat dus nooit werken. Het is een beetje moeilijk te begrijpen wat je nu eigenlijk wilt. De ene keer heb je het over een webserver, de andere keer over jou lokale PC...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, ik ben er ook achter dat dit niet de methode is.
Het zou ook niet goed zijn als php scripjes zomaar bestanden op je computer kunnen plaatsen...

Maar hoe dan wel?

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

FTP servertje installeren op je lokale PC.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, dat kan, maar ik heb nu apache op mijn computer draaien, en dat werkt ook prima.

Het gaat er om dat ik zonder iets te installeren deze mogelijkheid wil hebben.

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Verwijderd schreef op 21 oktober 2004 @ 14:14:
Ja, dat kan, maar ik heb nu apache op mijn computer draaien, en dat werkt ook prima.

Het gaat er om dat ik zonder iets te installeren deze mogelijkheid wil hebben.
Dan zou je een verbinding kunnen maken met bijv. sockets. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan zou je een verbinding kunnen maken met bijv. sockets. :)
Daar ben ik niet mee bekend.
Zou je een voorbeeldje kunnen geven van een script waarin dit gebruikt is?

Acties:
  • 0 Henk 'm!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Verwijderd schreef op 21 oktober 2004 @ 14:35:
[...]


Daar ben ik niet mee bekend.
Zou je een voorbeeldje kunnen geven van een script waarin dit gebruikt is?
Kan jij stap voor stap precies uitleggen wat jij wilt doen?
Alles hierboven klinkt nogal vaag namelijk.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK.

Input: een lijst met .jpg bestanden.

Daarna: Een voor een ophalen van de .jpg bestanden en opslaan op de harde schijf van de computer waar ik momenteel achter zit.

Het script moet op internet draaien, dus niet op een apacheserver die op mijn eigen computer is geinstalleerd.
De bestanden komen dus op een andere computer terecht als waar het script draait.

Alvast bedankt voor je (ullie) hulp.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Draait er een FTP-server op de webserver? Kun je dan de bestanden niet met php op de server opslaan en dan met ftp op je werkstation/client (of "lokale filesystem" zoals je dat noemt) de bestanden niet downloaden? Eventueel gescheduled. Klinkt vies, maar als php niet mag netwerken, dan maar zo.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, er draait wel een ftpserver, maar het gaat om zoveel jpg-jes dat ik die niet op mijn server wil zetten.
Degene die het script gebruikt moet de bestanden zelf kunnen downloaden.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Moet het nou naar jouw PC, of naar de PC van de bezoeker (willekeurig persoon dus)?

Wat je anders kan doen is alle jpg-tjes verzamelen in een temp-dir, alles tarren, gzippen en vervolgens als download aanbieden. Dat men dus zelf één bestand download met alle jpg's erin. En na de download de tar.gz weer deleten.
Is dat wat?

PS: Je kunt niet zien of een download voltooid is, dus zou je de tar.gz's een dag of een paar uur kunnen laten staan.

[ Voor 23% gewijzigd door Room42 op 21-10-2004 15:11 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Nu snap ik er geen fluit meer van. Dus meerdere mensen moeten vanaf verschillende lacaties een heleboel bestandjes kunnen downloaden?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jongens.

Het gaat er om dat bestanden gedownload kunnen worden via een PHP script wat op een webserver draait.
De bestanden staan daar niet perse.

Of de bestanden nou op mijn pc terecht komen of op die van iemand anders, dat maakt niet uit.

Er moet niets anders nodig zijn dan alleen het PHP script.

Duidelijker kan ik het niet zeggen hoor.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Jahaa, je wil ze downloaden, maar waar vandaan download je dan?!

Wil je soms met php een bestand downloaden van een andere site, en dat gedownloade bestand weer bij jezelf (of waar dan ook) opslaan? Bedoel je dat?

Leg het nou es van het begin tot het eind uit hoe wat en waar alles moet gebeuren.

[ Voor 66% gewijzigd door Room42 op 21-10-2004 15:19 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het gaat er om dat bestanden gedownload kunnen worden via een PHP script wat op een webserver draait.
De bestanden staan daar niet perse. << vanaf een andere server kan ook (via http)

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Even kijken of ik het goed begrijp:

Je wilt mogelijk maken om vanaf verschillende plaatsen plaatjes op te halen en die vervolgens als 1 download aan de gebruiker van je php script aan te bieden.

Er zijn grofweg twee manieren om dit aan te pakken:
1. Je genereert een pagina met allemaal [img]"plaatje"[/img] tags. De gebruiker zal alle plaatjes in 1 pagina te zien krijgen en kan deze in 1 keer helemaal opslaan.
2. Je download alles met je php script, stopt het in een container (zipfile) en bied die aan aan de gebruiker.

Welke van de twee wil je doen?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Methode 1 komt het dichtst in de buurt.
Dit had ik al gedaan, maar de bestanden worden niet gedownload als je de html pagina opslaat (je krijgt ook de melding dat de pagina mogelijk niet juist wordt opgeslagen.)

Methode 2 valt af. Dan moet ik op mijn server grote hoeveelheden data genereren.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op 21 oktober 2004 @ 15:31:Dit had ik al gedaan, maar de bestanden worden niet gedownload als je de html pagina opslaat (je krijgt ook de melding dat de pagina mogelijk niet juist wordt opgeslagen.)
Heb je wel File -> Save page as... -> Web page, complete gedaan? Dus inderdaad niet alleen de HTML.

Die methode zou goed moeten werken, echter is hij niet gebruiksvriendelijk.
Overigens moet je voor methode 1 ook alles op de server opslaan, anders link je gewoon direct naar de orginele server. Of is dat wat je wilt?

[ Voor 38% gewijzigd door Room42 op 21-10-2004 15:47 . Reden: Oeps :) ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Gerco schreef op 21 oktober 2004 @ 15:20:
Even kijken of ik het goed begrijp:

Je wilt mogelijk maken om vanaf verschillende plaatsen plaatjes op te halen en die vervolgens als 1 download aan de gebruiker van je php script aan te bieden.

Er zijn grofweg twee manieren om dit aan te pakken:
1. Je genereert een pagina met allemaal [img]"plaatje"[/img] tags. De gebruiker zal alle plaatjes in 1 pagina te zien krijgen en kan deze in 1 keer helemaal opslaan.
2. Je download alles met je php script, stopt het in een container (zipfile) en bied die aan aan de gebruiker.

Welke van de twee wil je doen?
Als ik het goed begrijp wil hij 3:

- Bezoeker (willekeurig persoon) gaat naar www.mijnsite.nl/download.php
- download.php haalt op 'www.google.nl/logo.gif', 'www.tweakers.net/henk.jpg'
- download.php slaat deze bestanden op op de pc van de bezoeker

De laatste stap is niet mogelijk, dus dan kom je inderdaad bij 1 of 2. Waarvan mij 2 het beste lijkt, en zoveel data genereed dat niet. Niet meer als 1 iig lijkt me. :)
tenzij je inderdaad direct linkt naar de plaatjes, dan is de data wel minder bij 1.

[ Voor 7% gewijzigd door OkkE op 21-10-2004 15:53 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Idd, als je volledig kiest slaat ie ze wel op.
Echter dit is niet helemaal gebruikersvriendelijk, en eigenlijk ook te omslachtig.

De bestandsverwijzigingen mogen gewoon naar andere servers wijzen, het hoeft niet naar bestanden op mijn webserver te zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OkkE schreef op 21 oktober 2004 @ 15:52:
[...]

Als ik het goed begrijp wil hij 3:

- Bezoeker (willekeurig persoon) gaat naar www.mijnsite.nl/download.php
- download.php haalt op 'www.google.nl/logo.gif', 'www.tweakers.net/henk.jpg'
- download.php slaat deze bestanden op op de pc van de bezoeker

De laatste stap is niet mogelijk, dus dan kom je inderdaad bij 1 of 2. Waarvan mij 2 het beste lijkt, en zoveel data genereed dat niet. Niet meer als 1 iig lijkt me. :)
tenzij je inderdaad direct linkt naar de plaatjes, dan is de data wel minder bij 1.
Klopt helemaal.

Wat ik begreep van 2 is dat er een zip bestand gemaakt wordt, en opgeslagen op mijn webserver. In dat geval is er aardig wat dataverkeer, en opslagruimte, nodig. Klopt dit?

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Verwijderd schreef op 21 oktober 2004 @ 15:55:
In dat geval is er aardig wat dataverkeer, en opslagruimte, nodig. Klopt dit?
Ja dat klopt. En in dat geval betaal jij voor het dataverkeer, en steel je het dus niet van een ander :/

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op 21 oktober 2004 @ 15:55:
[...]
Klopt helemaal.

Wat ik begreep van 2 is dat er een zip bestand gemaakt wordt, en opgeslagen op mijn webserver. In dat geval is er aardig wat dataverkeer, en opslagruimte, nodig. Klopt dit?
Dat hangt toch helemaal af van de hoeveelheid plaatjes (per keer), de hoeveelheid gebruikers en hoe lang je de bestanden laat staan.

Mijn inziens valt dat dus wel mee (een gemiddelde foto jpg is vaak tussen de 100 en 400 kB). Maar ik weet niet wat voor verbindig jij of je host hebben, en of daar een datalimiet aan hangt.
TheBorg schreef op 21 oktober 2004 @ 16:03:
[...]


Ja dat klopt. En in dat geval betaal jij voor het dataverkeer, en steel je het dus niet van een ander :/
wel een beetje, want hij download de plaatjes wel allemaal eerst. Dus dat dataverkeer is er toch wel.

[ Voor 21% gewijzigd door Room42 op 21-10-2004 16:06 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
[edit] Dat moest natuurlijk netjes in mijn vorige post

[ Voor 179% gewijzigd door Room42 op 21-10-2004 16:06 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het zijn maximaal zo'n 10000 plaatjes, dus dat vind ik toch ff te veel om mijn server daarvoor te laten gebruiken.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
LOL ja das niet niets :) Dan zul je toch de niet-zo-vriendelijke methode moeten gebruiken. Óf er moet wat mogelijk zijn met javascript ofzo, maar daar ben heb ik niet zoveel verstand van.

Je kunt je page trouwens ook compleet opslaan met programma's als Teleport Pro.

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 21 oktober 2004 @ 16:12:
Het zijn maximaal zo'n 10000 plaatjes, dus dat vind ik toch ff te veel om mijn server daarvoor te laten gebruiken.
Je wilt wel de gebruiekrs van *JOUW* site afbeeldingen laten downloaden, maar je weigert je eigen bandbreedte ervoor te gebruiken?

Laat dat php script dan een pagina genereren met links naar de afbeeldingen. Dan zien mensen echter wel dat de plaatjes niet bij jou worden gehost. Daarnaast gaat dit onderuit zodra er iemand een referer check heeft draaien.

Op het moment dat je echt wilt gaan "faken" dat ze van *JOUW* site afkomen dan kost het je gewoon bandbreedte.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK,

Iedereen bedankt die met me meegedacht heeft.
Ik weet nu iig wat de mogelijkheden zijn.
Ik ga weer terug naar waar ik begonnen ben, maar ik ben wel weer een stukje wijzer geworden.

Gr.
Henk
Pagina: 1