Page 1 sur 1

déplacement de fichier temporaire

Posté : 28 mai 2007, 11:58
par orgerix
Bonjour,

J'ai un petit problème pour déplacer un fichier temporaire.

j'utilise ce script :
$fname = tempnam("./tmp", "example.xls");
[...]
rename('/tmp/exemple.xls','fichier.xls');

et j'ai cette erreur

Code : Tout sélectionner

Warning: rename() [function.rename]: SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /tmp owned by uid 0 in /mnt/148/sdb/5/3/allianceducentre/excel.php on line 29

Posté : 28 mai 2007, 14:38
par Sékiltoyai
Tu n'as pas les droits sur le dossier, tu vas être obligé d'utiliser un dossier où tu les as, par exemple dans ton arborescence web...

Posté : 28 mai 2007, 16:36
par Genova
Le problème vient du safemode. En gros ton script PHP n'a les droits que sur les dossiers qu'il aura créé lui même.

La solution : créé un répertoire temporaire via mkdir().

Posté : 28 mai 2007, 18:35
par orgerix
Merci, je vais essayer ca.

Posté : 28 mai 2007, 20:45
par orgerix
Juste un question.

COmment supprimer un dossier ?

La fonction unlink() marche ?

EDIT : Ca ne marche pas, j'ai toujours le message d'erreur. Sinon, il y a un moyen de créer un fichier pas temporaire ? j'en ia besoin car j'utilise la librairie writeexcel qui a besoin de travailler sur un fichier.

Posté : 29 mai 2007, 09:35
par Genova
Pour supprimer un dossier : rmdir()

unlink() sert à la suppression de fichier.

Posté : 29 mai 2007, 18:06
par orgerix
Merci.

Sinon j'y comprend rien, j'ai du modifier quelque chose mais je sais pas quoi et maintenant, ca me donne :

Code : Tout sélectionner

Warning: rename(tmp/exemple.xls,Loches.xls) [function.rename]: No such file or directory in /mnt/148/sdb/5/3/allianceducentre/excel.php on line 31
mon code est
               $fname = tempnam('tmp','exemple.xls');
	$classeur= &new writeexcel_workbook($fname);
	$feuille = &$classeur->addworksheet();

	$i=1;
	foreach($val as $key=>$value)
		{$feuille->write(0, $i,  $key);
		$feuille->write(1, $i,  'moyenne');
		$feuille->write(1, $i+1,  'total');
		foreach($value as $key1=>$value1)
			{$feuille->write($key1+1, 0,  $key1);
			$feuille->write($key1+1, $i,  $value1['moyenne']);
			$feuille->write($key1+1, $i+1,  $value1['total']);
		}
		$i+=2;
	}
	$classeur->close();
	rename('exemple.xls',$ke.'.xls');