[php] self-extracting zip-file aanbieden buiten wwwroot

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het lukt me niet om correct een file ter download aan te bieden, welke buiten de wwwroot staat.
Het gaat om een self-extracting zip-file. Als ik de pagina aanroep, kan ik het file downloaden. Alleen bij het openen daarna krijg ik een dos-venster wat gelijk weer weg gaat. De grootte van het bestand klopt wel.

in de code staat de file in dezelfde map als de php-pagina, dit is alleen om te testen, later zal hij buiten de wwwroot komen te staan.

De fout zal wel in de headers zitten, maar kan hem zelf niet ontdekken. Een exe aanbieden ipv een self-extracting zip-file werkt ook niet.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$file = 'test.exe'; 
if (!file_exists($file))
{
  echo "geen file";
  exit;
}
$tag = fopen($file, 'rb');
if ($tag) {      
  header("Content-type: application/octet-stream");
  header("Content-Disposition:attachment;filename=$file");    
  header ("Content-Length: ".filesize($file));      
  readfile($file);            
}


Geen url-scan draaien.
De foutmelding is dus dat er een dos-venster wordt opgestart en gelijk verdwijnt ipv de applicatie.
ik draai apache 2 + php 5 op winxp sp 2

[ Voor 8% gewijzigd door Verwijderd op 23-04-2007 15:59 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
URLScan toevallig draaien?

Daarnaast; kijk eens even in onze Programming Beleid Quickstart. Je zult zien dat we nogal wat informatie missen in je topic (zoals o.a. de foutmelding, welke server etc). Bij deze dan ook het vriendelijke verzoek je topic even aan te vullen met relevante info.

[ Voor 151% gewijzigd door RobIII op 23-04-2007 15:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 11:23

RM-rf

1 2 3 4 5 7 6 8 9

PHP:
1
header("Content-Transfer-Encoding: binary");

eraan toevoegen misschien?

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je nou eerst een DOS-venster opent en daarna vanuit dat venster het gedownloade bestand aanroept, dan kun je zien wat de foutmelding is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@RM-rt
Nee, wil niet helpen.

Had ik al geprobeerd, en net nog even voor de zekerheid, maar dan nog steeds een dos-scherm wat gelijk weer weg springt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hier de foutmelding dan:

code:
1
2
C:\DOCUME~1\Joris\BUREAU~1>import.exe
Programma te groot voor geheugen


Als ik gewoon een directe link plaats binnen wwwroot, dan werkt het dus wel.

Is het bestand te groot om in te lezen voor php ofzo (1,5 mb)?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als de grootte's van beide bestanden gelijk zijn zou het inlezen geen probleem moeten zijn; dan zit het ergens in een header. Welke kan ik je helaas niet zeggen, want dat weet ik niet. :)

[ Voor 6% gewijzigd door NMe op 23-04-2007 16:14 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ook met headers op internet, die schijnbaar wel werken

http://gathering.tweakers.net/forum/list_messages/1212929

Heb ik hetzelfde probleem, zou het een fout in de configuratie van php / apache kunnen zijn?

Voor pdf-files werkt de volgende code wel:

PHP:
1
2
3
4
5
6
7
$file = $_GET['file'];
  $file = $pathStatistieken.$file;
  $tag = fopen($file, 'rb');
  if ($tag) {
    header('Content-Type: application/pdf');
    fpassthru($tag);
  }


Na testen op mijn linux-server, kwam ik erachter dat de headers niet verzonden konden worden. Er stond nog ergens wat output. Op de windows machine gaf hij deze errors niet. Nu werkt hij dus correct.

Vroeger gaf hij deze warnings wel, is er iets veranderd bij php5, waardoor de instellingen voor de warnings moeten worden veranderd.

[ Voor 61% gewijzigd door Verwijderd op 23-04-2007 17:18 ]

Pagina: 1