| Voir le sujet précédent :: Voir le sujet suivant | 
	
	
		| Auteur | Message | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Mer Avr 27, 2005 11:22    Sujet du message: Dossier des fichiers temporaire 'open_basedir' |   |  
				| 
 |  
				| J'ai un forum SMF qui est hebergé sur le serveur et depuis quelques temp l'upload d'image ne fonctionnait plus. 
 J'ai cru que ça venait de l'utilisation du mode CLI pour le langage PHP mais il semble que ça ne vienne pas forcement de là.
 
 Aprés avoir pris contact avec les developer ce serait plutot suite à une modification du code qui à besoin de l'existance d'un dossier en particulier
 
 Voici la réponse obtenu
 
 
  	  | Citation: |  	  | Il semblerait que le nouveau code fonctionne... si ton hébergeur a ajouté le dossier des fichiers temporaires à 'open_basedir', ce qui n'est pas ton cas.  Une autre solution qui s'offre à toi est de contacter ton hébergeur pour leur demander d'ajouter ce répertoire à 'open_basedir' de leur configuration de PHP.
 | 
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Mer Avr 27, 2005 13:12    Sujet du message: |   |  
				| 
 |  
				| En effet ! Le répertoire temporaire est accessible que pour les sessions automatiquement !
 
 Normalement il faut alors créer un répertoire temporaire sur votre compte accessible par open_basedir et:
 mode CLI: il faut que le serveur apache y ai accès en écriture
 mode CGI: rien à faire, il à accès à tout votre compte
 
 Maintenant, si cela pose souci, je peux toujours ajouter un répertoire temporaire global à open_basedir !
 _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Mer Avr 27, 2005 14:53    Sujet du message: |   |  
				| 
 |  
				| Ok, donc je crée un repertoire sur mon compte mais comment doit je faire pour qu'il sois reconnu comme tel? |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Mer Avr 27, 2005 15:25    Sujet du message: |   |  
				| 
 |  
				| Bah dans le script lui dire de créer dans ce répertoire ! 
 Tout dépend de votre script !
 
 C un upload ? Création pur d'un fichier ? etc ...
 _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Mer Avr 27, 2005 16:22    Sujet du message: |   |  
				| 
 |  
				| Oula c pas un script que j'ai créer sinon j'aurrai pu le faire moi même. Je pense que le mieux c'est de faire en sorte qu'il soit accessible par defaut sans changer le script. 
 Par ailleur cette solution permettra à d'autre utilisateur d'utiliser ce forum et en cas de mise à jour ça permet d'eviter toute modification de code et d'eventuel trous de sécurité.
 
 Bien sur si ça demande trops de modif sur le serveur j'aimerai avoir un lien pour avoir un peut de documentation sur cette fonction afin de modifier le code proprement
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Jeu Avr 28, 2005 01:48    Sujet du message: |   |  
				| 
 |  
				| C'est possible d'avoir le bout de code qui tente d'écrire la chose qui coince ? Histoire que je sache réellement ce que je dois faire
  _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Jeu Avr 28, 2005 18:50    Sujet du message: |   |  
				| 
 |  
				| Ok je vais faire mes petite recherche dans le code avec une modification qui fonctionne afin que tu puisse voir ce qu'il faut faire. 
 Je pense te le poster demain tranquillement, ça t'evitera d'avoir à lire 200Ko de code, je te mettrait le strict minimum
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Sam Avr 30, 2005 19:28    Sujet du message: |   |  
				| 
 |  
				| Ok c'est fait, j'ai reperer la modification de code qui coince et je t'ajoute le detail de la fonction en question 
 ça concerne
 
 
  	  | Code: |  	  | if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]) || !file_exists($_FILES['attachment']['tmp_name'][$n])) fatal_lang_error('smf124');
 | 
 
 Qui avant etait
 
  	  | Code: |  	  | if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]))
 fatal_lang_error('smf124');
 | 
 
 Voici le detail en question
 
 
  	  | Code: |  	  | // ...or attach a new file... if (isset($_FILES['attachment']['name']) && $_FILES['attachment']['name'][0] != '')
 {
 isAllowedTo('post_attachment');
 
 // If this isn't a new post, check the current attachments.
 if (isset($_REQUEST['msg']))
 {
 $request = db_query("
 SELECT COUNT(ID_ATTACH), SUM(size)
 FROM {$db_prefix}attachments
 WHERE ID_MSG = $_REQUEST[msg]", __FILE__, __LINE__);
 list ($quantity, $total_size) = mysql_fetch_row($request);
 mysql_free_result($request);
 }
 else
 {
 $quantity = 0;
 $total_size = 0;
 }
 
 $attachIDs = array();
 foreach ($_FILES['attachment']['tmp_name'] as $n => $dummy)
 {
 if ($_FILES['attachment']['name'][$n] == '')
 continue;
 
 if (!is_uploaded_file($_FILES['attachment']['tmp_name'][$n]) || !file_exists($_FILES['attachment']['tmp_name'][$n]))
 fatal_lang_error('smf124');
 
 // Remove special foreign characters from the filename.
 if (empty($modSettings['attachmentEncryptFilenames']))
 $_FILES['attachment']['name'][$n] = getAttachmentFilename($_FILES['attachment']['name'][$n], false, true);
 
 // Is the file too big?
 if (!empty($modSettings['attachmentSizeLimit']) && $_FILES['attachment']['size'][$n] > $modSettings['attachmentSizeLimit'] * 1024)
 fatal_lang_error('smf122', false, array($modSettings['attachmentSizeLimit']));
 
 // Have we reached the maximum number of files we are allowed?
 $quantity++;
 if (!empty($modSettings['attachmentNumPerPostLimit']) && $quantity > $modSettings['attachmentNumPerPostLimit'])
 fatal_lang_error('attachments_limit_per_post', false, array($modSettings['attachmentNumPerPostLimit']));
 
 // Check the total upload size for this post...
 $total_size += $_FILES['attachment']['size'][$n];
 if (!empty($modSettings['attachmentPostLimit']) && $total_size > $modSettings['attachmentPostLimit'] * 1024)
 fatal_lang_error('smf122', false, array($modSettings['attachmentPostLimit']));
 
 if (!empty($modSettings['attachmentCheckExtensions']))
 {
 if (!in_array(strtolower(substr(strrchr($_FILES['attachment']['name'][$n], '.'), 1)), explode(',', strtolower($modSettings['attachmentExtensions']))))
 fatal_error($_FILES['attachment']['name'][$n] . '.<br />' . $txt['smf123'] . ' ' . $modSettings['attachmentExtensions'] . '.', false);
 }
 
 if (!empty($modSettings['attachmentDirSizeLimit']))
 {
 // Make sure the directory isn't full.
 $dirSize = 0;
 $dir = @opendir($modSettings['attachmentUploadDir']) or fatal_lang_error('smf115b');
 while ($file = readdir($dir))
 {
 if (substr($file, 0, -1) == '.')
 continue;
 
 $dirSize += filesize($modSettings['attachmentUploadDir'] . '/' . $file);
 }
 closedir($dir);
 
 // Too big!  Maybe you could zip it or something...
 if ($_FILES['attachment']['size'][$n] + $dirSize > $modSettings['attachmentDirSizeLimit'] * 1024)
 fatal_lang_error('smf126');
 }
 
 // Find the filename, strip the dir.
 $destName = basename($_FILES['attachment']['name'][$n]);
 
 // Check if the file already exists.... (for those who do not encrypt their filenames...)
 if (empty($modSettings['attachmentEncryptFilenames']))
 {
 // Make sure they aren't trying to upload a nasty file.
 $disabledFiles = array('con', 'com1', 'com2', 'com3', 'com4', 'prn', 'aux', 'lpt1', '.htaccess', 'index.php');
 if (in_array(strtolower($destName), $disabledFiles))
 fatal_error($destName . '.<br />' . $txt['smf130b'] . '.');
 
 // Check if there's another file with that name...
 $request = db_query("
 SELECT ID_ATTACH
 FROM {$db_prefix}attachments
 WHERE filename = '" . strtolower($_FILES['attachment']['name'][$n]) . "'
 LIMIT 1", __FILE__, __LINE__);
 if (mysql_num_rows($request) > 0)
 fatal_lang_error('smf125');
 mysql_free_result($request);
 }
 
 if (!is_writable($modSettings['attachmentUploadDir']))
 fatal_lang_error('attachments_no_write');
 
 db_query("
 INSERT INTO {$db_prefix}attachments
 (" . (!empty($_REQUEST['msg']) ? 'ID_MSG, ' : '') . "filename, size)
 VALUES (" . (!empty($_REQUEST['msg']) ? $_REQUEST['msg'] . ', ' : '') . "'" . $_FILES['attachment']['name'][$n] . "', " . $_FILES['attachment']['size'][$n] . ')', __FILE__, __LINE__);
 $attachID = db_insert_id();
 $attachIDs[] = $attachID;
 
 $destName = $modSettings['attachmentUploadDir'] . '/' . getAttachmentFilename($destName, $attachID, true);
 
 if (!move_uploaded_file($_FILES['attachment']['tmp_name'][$n], $destName))
 fatal_lang_error('smf124');
 
 // Attempt to chmod it.
 @chmod($destName, 0644);
 }
 }
 | 
 
 Voilà j'espère que ce n'est pas trop ardu sinon je t'enverai le reste du code si c'est incomplet
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 12:16    Sujet du message: |   |  
				| 
 |  
				| J'ai une solution plus precise au problème 
 Il suffit de definir l'adresse du dossier temporaire /temp (ou autre dossier) dans le fichier php.ini
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 12:56    Sujet du message: |   |  
				| 
 |  
				| Est défini dans php.ini 
 upload_tmp_dir = /tmp/upload_tmp_dir
 
 Oki, il existe plus !
 
 Ya des dossiers qui manquent !
 
 Bordel de m...., ya vraiment des scripts qui foutent vraiment n'importent quoi !
 
 Je vais être plus dur ...
 _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| percherie 
 
 
 Inscrit le: 30 Nov 2002
 Messages: 135
 Localisation: Montpellier
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 18:00    Sujet du message: |   |  
				| 
 |  
				| Non en fait c'est pour eviter des pertes de fichiers pendant l'envoie, ça verifie l'existence du dossier temporaire avant l'envoie d'aprés ce que j'ai compris et evite que les fichiers envoyer occupe de la place sur le server sans le que le forum sans rendent compte 
 En gros on empeche l'occupation de place inutile
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| Altdorf 
 
  
 Inscrit le: 26 Mai 2004
 Messages: 547
 Localisation: Doubs (25)
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 18:54    Sujet du message: |   |  
				| 
 |  
				| Vous avez fait des modifs sur le serveur cet aprèm? Parceque j'ai eu des messages d'erreur dans mon forum phpBB et plus paticulièrement dans l'album photo. J'étais pas chez moi et j'ai pas pu noter le message mais ça parlais de "TMP" et là je lis ce sujet sur Eurower donc j'en ai déduis que vous avez fait quelque chose. En tout cas mon forum remarche sans que j'ai eu le temps de faire quoi que ce soit. _________________
 http://www.lanparty.fr/
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 19:08    Sujet du message: |   |  
				| 
 |  
				| Oui, enlever l'accès à /tmp car ya des scripts idiots qui supprime tout ! 
 J'ai du le remettre !
 _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| Altdorf 
 
  
 Inscrit le: 26 Mai 2004
 Messages: 547
 Localisation: Doubs (25)
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 19:13    Sujet du message: |   |  
				| 
 |  
				| Des scripts de qui? Et ça risque de le refaire?
 _________________
 http://www.lanparty.fr/
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		| eurower Site Admin
 
  
 Inscrit le: 03 Jan 2002
 Messages: 1458
 Localisation: Lyon
 
 | 
			
				|  Posté le: Dim Mai 08, 2005 19:46    Sujet du message: |   |  
				| 
 |  
				| Surement, 
 déjà je dois régler ce problème de limite de vhost !
 _________________
 Modérateur des forums
 Président de l'association
 
 Hébergement eurower.net
 Association loi 1901
 |  | 
	
		| Revenir en haut de page |  | 
	
		|  | 
	
		|  |