PHP file ter download
Hoe krijg ik dit voor elkaar ? Ik probeerde het volgende, maar dan krijg ik een bestand ter download waar een PHP error in zit :
Code (php)
Het bestand download ik dan maar die bevat niet de PHP code maar de output errors :
<br />
<b>Warning</b>: include(setup.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in .... etc
Gewijzigd op 01/01/1970 01:00:00 door Eelco
Je kan geen extern PHP bestand downloaden.
Tuurlijk wel, als je maar de juiste headers meegeeft. Als downloadlocatie.nl die ook meegeeft, kan het gewoon ;)
Dan zou dus iemand jou complete broncode kunnen downloaden?
Ja, is toch niet erg? Als jij een klasse wilt delen.
Anders download ik even de config van jou website, en gooi ik je complete database leeg....
.phps, dan geeft hij de code, dus waarom zou je dan niet dat bestand kunnen downloaden?
dan is het enige wat de gebruiker moet doen ff CTRL-a Ctrl-c Ctrl-v ;)
zippen is een moglijkheid, of een phps, zo doe ik het ook altijd.
Hij vraagt dus hoe het opgelost kan worden, dus ik vertel hem dat hierboven:
"Je kunt geen externe php bestanden downloaden"
Vervolgens komt er iemand aan die zegt dat het wel kan, maar het kan echt niet, anders kun je even de config van een site afhalen, en dan de site hacken.
En daarna komen mensen met allemaal oplossingen die nergens toe doen, want wat je dan doet, is het script laten zien, terwijl er toch duidelijk staat dat hij het bestand wil laten downloaden...
Dus als het je eigen site is: gebruik relatieve paths, dus geen URL's. Als het je eigen site is maar toch extern: bied .phps (php-source) aan. Als het niet van jou is: accepteer dat het niet kan.
@Iedereen
Als je niet weet waar je over praat (hoi Cartman), reageer dan aub niet.
@Iedereen
Luister ook effe naar PHP Newbie want hij heeft duidelijk soms wat nuttigs te melden.
Onmogelijk mag je het niet noemen maar je dient wel zelf de beheer te hebben over de configuratie van de webserver en in dit geval praat ik over Apache.
Je kan namelijk uit de hoofd configuratie bestand (httpd.conf) deze regel verwijderen:
AddType application/x-httpd-php .php
En per virtualhost instellen, je kan dus op www.website.nl de php scripts door de parser laten gooien en op download.website.nl er voor kiezen dat php extensie's niet door de parser gaan door deze bovengenoemde regel niet te gebruiken.
@Iedereen
Onmogelijk is pas als je alles doordacht hebt en overal rekening mee hebt gehouden!
Gewijzigd op 01/01/1970 01:00:00 door Danny Roelofs
Mocht je een bestand van je eigen server ter download willen aanbieden, dan kan dit door de relatieve locatie op te geven, dus waar het bestand staat ten opzichte van jouw download script (Stel, het staat in een map hoger en heet setup.php: @readfile('../setup.php'); )
Mocht je de broncode willen laten inzien (van een bestand wat op jouw server staat) door mensen, kopieer/hernoem het bestand dan naar een bestand wat de extensie .phps heeft.
Wat Cartman bedoelt is dat downloadlocatie.nl, mocht het zijn PHP broncode ter download willen aanbieden, het expliciet niet moet laten parsen door zijn PHP parser, dit is een instelling die je niet van "buitenaf" kunt beïnvloeden, en de eigenaren van downloadlocatie.nl zouden er dan dus voor moeten zorgen dat hun webserver de broncode verstuurt i.p.v. de geparste code,
Edit:
Danny Roelofs hierboven vult mij hier goed aan
indien downloadlocatie.nl dit zou doen, dan voegt jouw script daar weinig aan toe en kun je mensen beter direct laten linken naar downloadlocatie.nl.Danny Roelofs hierboven vult mij hier goed aan
Hopelijk helpen we je niet van de wal in de sloot, en begrijp je ons een beetje ;)
Gewijzigd op 01/01/1970 01:00:00 door Andries Louw Wolthuizen