Regenerer une page web automatiquement lors d'un ajout d'un fichier sur serveur

Re-Bonjour Hyperion66,

J’ai essayé ce que tu m’as dit précédemment et cela marche ! Merci beaucoup…Je l’ai appelé test.php (pour les explications qui suivent )

Mais en fait le dossier ou la fonction devra s’appliquer contient des documents privés et est dans une zone protégée par htaccess. Or avec les tests que j’ai fait avec le fichier .php à la racine du site : la protection .htaccess ne s’applique pas : la fonction m’affiche les fichiers et il est possible de les télécharger…
Je souhaiterais donc placer ce fichier .php dans ma zone protégée (pour en contrôler l’accès) et appliquer la formule dans la zone protégée…Mais quand je place le fichier .php autre part que dans la racine, la fonction m’envoi un message d’erreur :

Fichiers
Date de mise en ligne
Taille du fichier

Warning: opendir(): open_basedir restriction in effect. File(/Documents) is not within the allowed path(s): (/home/phpmyadmin/:/home/httpd/vhosts/www.monsite.fr/:/home/httpd/vhosts/www.monsite.fr/tmp/:/usr/local/share/php/) in /home/httpd/vhosts/www.monsite.fr/web/Documents/test.php on line 18 Warning: opendir(/Web/Documents): failed to open dir: Operation not permitted in /home/httpd/vhosts/www.monsite.fr/web/Documents/test.php on line 18 Warning: readdir(): supplied argument is not a valid Directory resource in /home/httpd/vhosts/www.monsite.fr/web/Documents/test.php on line 20
0 fichiers disponibles pour un poids total de Ko


Pour informations, rencontrant ces problèmes, j’ai mémorisé automatiquement les mdp et login de ma zone protégée pour etre sur que ce ne soit pas cela qui empêche la fonction de s’appliquer!

J’ai essayé de faire pointer la fonction en mettant un chemin du type :

$path = Documents; comme quand le fichier .php est à la racine

ou

$path = Web/Documents; car mon logiciel de transfert ftp. m’indique ce chemin quand je navigue sur le serveur

ou

$path = /home/httpd/vhosts/www.monsiten.fr/web/Documents/ comme je fais pour mon fichier .htaccess

J’ai tout essayé, avec des guillemets, des /, etc. Mais rien ne marche, je pense donc que c’est une facon de l’ecrire…

Y a t’il une façon particulière de définir le chemin lorsque l’on place se fichier .php dans le dossier ( racine/Documents/test.php) pour qu’il pointe dans le fichier documents (racine/Documents/) ou dans un autre sous dossier si cela est la source du problème ??

J’espère avoir réussi à expliquer mon problème…

Merci d’avance encore une fois

???

Mes compétences s’arrêtent là…

Pourtant, mes fichiers sont bien dans un dossier protégé par login et mdp aussi.

Bonsoir Hyperion 66,

Pour faire plus simple (parce que cela devient vite compliqué) ! :slight_smile:

Comment faire pour définir le chemin de la fonction si le fichier .php est dans les dossier

racine/Documents/prog/test.php

et que les fichiers a lister sont dans le dossier

racine/Documents

Soit un dossier parents?

J’espère que tu pourras m’aider parce que je ne comprend pourquoi on ne peut pas définir un sous dossier…

Encore une fois merci d’avance

Peut-être en mettant l’URL complète (http://www…) ?

Bonjour Hyperion66,

Encore moi…Je voulais te remercier pour tes réponses concernant la fonction “listing” et la variable “path”

Je fais appelle à tes connaissances en tant que programmeur du fichier. J’ai réussi à utiliser ta fonction et le résultat est parfait sur mon site. Quand je clic sur le lien pour télécharger le document, il me propose soit de l’ouvrir soit de le télécharger. Que je choisisse l’un ou l’autre, j’ai une erreur au niveau du fichier téléchargé : celui-ci ne fait pas la bonne taille et pdf reader me dit qu’il s’agit d’un problème d’encodage…

J’ai vérifié sur mon serveur et les fichiers pdf sont bien à la bonne taille. Saurais-tu me dire comment corriger ce problème? Au pire je suis ouvert au fait de désactiver la fonction down (juste avoir le listing et cliquer sur le lien pour soit télécharger soit ouvrir…Avoir un système plus simple (pour moi ! J) en fait.

Merci d’avance Hyperion66

Je te remets code que j’ai pour la fonction php et pour le down :

<table cellpadding="3" cellspacing="1" align="center" border="1">
  <tr>
          <th scope="col">Fichiers<br /></th>
          <th scope="col">Date de mise en ligne<br />
          <th scope="col">Taille du fichier<br /></th>
        </tr>
        <?php

function listing1($dir)
{
 $pdf_files = array();
 $dh = opendir($dir);

 while (false !== ($filename = readdir($dh)))
 {
 if(strtolower(strrchr($filename, '.')) == '.pdf')
 $pdf_files[] = $filename;
 }
 
 rsort($pdf_files);

$sommepoids = "";

 foreach($pdf_files as $pdf_file)
 {
	$poidsdufichier = round(filesize($dir."/".$pdf_file)/1024,2);
$sommepoids += $poidsdufichier;
			echo '<tr>
          <td><p align="center"><a href="down.php?pdf='.rawurlencode(str_replace ('/', '', $pdf_file)).'">'.$pdf_file.'</a></p></td>
        <td><p align="center">'.date ("d/m/Y", filectime($dir."/".$pdf_file)).'</p></td><td><p align="center">'.round(filesize($dir."/".$pdf_file)/1024,2) .'Ko</p></td>
        </tr>';
	}
	;
	 }
	  

listing1($path1);
$urlComplete= rawurlencode(str_replace ('/', '', $value));

?>
<? 
header("Content-type: application/pdf"); 
header("Content-Disposition: attachment; filename=$pdf"); 
readfile($pdf); 
?>  

Edité le 09/04/2008 à 13:34