script téléchargement plante avant la fin du transfert

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script téléchargement plante avant la fin du transfert

Re: script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 22:02

non sa me fais ça après environs 15 à 20minutes
mais comme je le disais se qui est étrange c'est que si je met mon lien en direct sans passer par ma page php je telecharge le fichiers sans soucis ,
tu va me dire ben fais comme ca mais non ce que je veux c'est que seuls les membres enregistré de mon forum et ce droit de telechargement et par la meme ne pas etre obliger de mettre les fichiers a la racine du site.

comment je fais pour activer et consulter les lots de php :oops:

Re: script téléchargement plante avant la fin du transfert

par moogli » 01 mars 2012, 20:13

Active et consulte les lot de php tu y trouveras peut être une infos si ça viens de la.

Ça te fait ça au bout de combien de temps ? (30s ? :mrgreen: )

@+

Re: script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 18:41

je l'ai egalement monter hier et j'ai bien reboot phpcgi popy^^ ce qui est byzzare c'est que si je telecharge en direct lien ça marche

Re: script téléchargement plante avant la fin du transfert

par popy » 01 mars 2012, 18:35

Monte le memory_limit, pour voir.

Re: script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 18:31

salut ;)
pour la taille max au depart j'avais 1022*8
mais comme je pensais que c'etais ca j'ai virer ^^

j'arrive bien a avoir 1/3 du fichier mais apres j'ai un message d'erreur citer dans mon 1er poste

voici le message d'erreur :

Image

Re: script téléchargement plante avant la fin du transfert

par moogli » 01 mars 2012, 18:24

Salut,

Rien a voir ce n'est pas un upload, à tu un message d'erreur ?

Parce que bon la tu oublier la taille Max des données issues de formulaire ^^

Un pb de timeout php ?
As tu au moins une partie du fichier ?

Pourquoi avoir des fichiers si gros y a pas moyen de les découper ?

@+

Re: script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 18:22

ok mais a combien dois je la mettre elle est deja a 5000 ^^

il n'y aurais pas une histoire de no-cache aussi dans les header ???

Re: script téléchargement plante avant la fin du transfert

par Shenryu » 01 mars 2012, 18:17

Salut,

Change la valeur du max_input_time également ;)

++

Re: script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 17:53

merci je regarde de suite et je redis ;)

je l'avais deja modif a 1000M
je tente de recuperer une archive.rar de 998 MO

Re: script téléchargement plante avant la fin du transfert

par dix2 » 01 mars 2012, 17:46

salut,

ça peut venir de la directive upload_max_filesize dans ton fichier php.ini
vérifie qu'elle est assez grande

dix2

script téléchargement plante avant la fin du transfert

par civodul88 » 01 mars 2012, 17:36

Bonjour ;) ;

Je tente de mettre en place une page telechargement.php qui me permet de vérifier l'authentification du membre, de spécifier un chemin autre que la racine du site, qui enregistre les actions dans un fichier txt.

Tout fonctionne correctement pour les petits fichiers, mais lorsque je tente de récupérer un gros fichier le script plante à la moitier du telechargement et j'ai un message d'erreur qui me dis qu'il est impossible de trouver le chemin spécifier.

Je cherche depuis un bon moment une solution un peu partout sur la toile, mais malheureusement sans succès,

c'est pourquoi je me tourne vers vous pour un petit coup de pouce .

voici mon code
<?php
//control des sessions
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Allow direct file download (hotlinking)?
// Empty - allow hotlinking
// If set to nonempty value (Example: example.com) will only allow downloads when referrer contains this text
define('ALLOWED_REFERRER', '');

// Download folder, i.e. folder where you keep all files for download.
// MUST end with slash (i.e. "/" )
define('BASE_DIR','C:\chemin de mon repertoire /');

// log downloads?  true/false
define('LOG_DOWNLOADS',true);

// log file name
define('LOG_FILE','downloads.log');

// Allowed extensions list in format 'extension' => 'mime type'
// If myme type is set to empty string then script will try to detect mime type 
// itself, which would only work if you have Mimetype or Fileinfo extensions
// installed on server.
$allowed_ext = array (

  // archives
  'zip' => 'application/zip',
  'rar' => 'application/rar',
  'bz2' => 'application/bz2',
  'iso' => 'application/iso',

  // documents
  'pdf' => 'application/pdf',
  'doc' => 'application/msword',
  'xls' => 'application/vnd.ms-excel',
  'ppt' => 'application/vnd.ms-powerpoint',
  
  // executables
  'exe' => 'application/octet-stream',

  // images
  'gif' => 'image/gif',
  'png' => 'image/png',
  'jpg' => 'image/jpeg',
  'jpeg' => 'image/jpeg',

  // audio
  'mp3' => 'audio/mpeg',
  'wav' => 'audio/x-wav',

  // video
  'mpeg' => 'video/mpeg',
  'mpg' => 'video/mpeg',
  'mpe' => 'video/mpeg',
  'mov' => 'video/quicktime',
  'avi' => 'video/x-msvideo'
);



####################################################################
###  DO NOT CHANGE BELOW
####################################################################
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(); 

if ($user->data['user_id'] == ANONYMOUS)
{
echo 
'<b style="color:blue;">Bonjour Anonymous,</b><br /><b style="color:red;">veuillez vous inscrire sur le forum pour acceder au t&eacute;l&eacute;chargement de ce fichier. Merci!
<a href="http://forum.civodul88.fr">http://forum.civodul88.fr</a></b>';
}

else
{
echo '<b style="color:blue;">bonjour
'. $user->data['username_clean'].', Vous avez &eacute;t&eacute; authentifier en tant que membre du forum. Merci.</b><br />'; 
 


// Si hotlinking pas permis, alors faire que les pirates pense qu'il ya des problèmes de serveur
if (ALLOWED_REFERRER !== ''
&& (!isset($_SERVER['HTTP_REFERER']) || strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER)) === false)
) {
  die("Erreur interne du serveur. S'il vous plaît contactez votre administrateur syst&eacute;me.  ");
}

// Assurez-vous que l'exécution du programme n'est en pas pause
// Set durée maximale d'exécution du script, en secondes (0 signifie aucune limite)
set_time_limit(0);

if (!isset($_GET['f']) || empty($_GET['f'])) {
  die("S'il vous plaît sp&eacute;cifier le nom de fichier à t&eacute;l&eacute;charger.");
}

// Null solution piratage d'octets
if (strpos($_GET['f'], "\0") !== FALSE) die('');

// Obtenir le nom de fichier réel.
// Suppression de toute information de chemin pour éviter le piratage en ajoutant chemin d'accès relatif, etc
$fname = basename($_GET['f']);

// Vérifier si le fichier existe
// Check in des sous-dossiers aussi
function find_file ($dirname, $fname, &$file_path) {

  $dir = opendir($dirname);

  while ($file = readdir($dir)) {
    if (empty($file_path) && $file != '.' && $file != '..') {
      if (is_dir($dirname.'/'.$file)) {
        find_file($dirname.'/'.$file, $fname, $file_path);
      }
      else {
        if (file_exists($dirname.'/'.$fname)) {
          $file_path = $dirname.'/'.$fname;
          return;
        }
      }
    }
  }

} // trouver le fichier

// obtenir le chemin complet du fichier (y compris les sous-dossiers)
$file_path = '';
find_file(BASE_DIR, $fname, $file_path);

if (!is_file($file_path)) {
  die('<b style="color:red;">Le fichier n&acute;existe pas. Veuillez prendre contact avec l&acute;administrateur du forum.</b><br /><a href="http://forum.civodul88.fr">http://forum.civodul88.fr</a>'); 
}

// taille du fichier en octets
$fsize = filesize($file_path); 

//  extension du fichier
$fext = strtolower(substr(strrchr($fname,"."),1));

// vérifier si l'extension a permis
if (!array_key_exists($fext, $allowed_ext)) {
  die("type de fichier non autoris&eacute;."); 
}

// get mime type
if ($allowed_ext[$fext] == '') {
  $mtype = '';
  // mime type is not set, get from server settings
  if (function_exists('mime_content_type')) {
    $mtype = mime_content_type($file_path);
  }
  else if (function_exists('finfo_file')) {
    $finfo = finfo_open(FILEINFO_MIME); // return mime type
    $mtype = finfo_file($finfo, $file_path);
    finfo_close($finfo);  
  }
  if ($mtype == '') {
    $mtype = "application/force-download";
  }
}
else {
  // Récupère le mime type défini par admin
  $mtype = $allowed_ext[$fext];
}

// Browser will try to save file with this filename, regardless original filename.
// You can override it if needed.

if (!isset($_GET['fc']) || empty($_GET['fc'])) {
  $asfname = $fname;
}
else {
  // remove some bad chars
  $asfname = str_replace(array('"',"'",'\\','/'), '', $_GET['fc']);
  if ($asfname === '') $asfname = 'NoName';
}

// set headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mtype");
header("Content-Disposition: attachment; filename=\"$asfname\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);

// download
 //@readfile($file_path);
$file = @fopen($file_path,"rb");
if ($file) {
  while(!feof($file)) {
    print(fread($file));
    flush();
    if (connection_status()!=0) {
      @fclose($file);
      die();
    }
  }
  @fclose($file); 
} 

// log downloads
if (!LOG_DOWNLOADS) die();

$f = @fopen(LOG_FILE, 'a+');
if ($f) {
  @fwrite($f, $user->data['username_clean']." ('/_\') ". date("m.d.Y g:ia")." ('/_\') ".$_SERVER['REMOTE_ADDR']." ('/_\') ".$fname."\r\n");
  @fclose($f);
}
}
?>
merci a vous de me vennir en aide :oops: