Lenteurs scan FTP

Eléphant du PHP | 103 Messages

11 mai 2014, 20:10

Merci, c'est modifié.

Cela me donne maintenant une erreur de lecture du fichier :
Warning: ftp_get(): dons.txt: Permission deny in /dons-test.php on line 31
erreur au téléchargement

ViPHP
xTG
ViPHP | 7331 Messages

11 mai 2014, 20:36

"Permission refusée" => l'utilisateur que tu utilises pour te connecter au ftp n'a pas les droits sur ce fichier.

Eléphant du PHP | 103 Messages

11 mai 2014, 21:05

Les droits, il les a, mais en lecture, puisqu'il doit juste lire et afficher le contenu d'un fichier .TXT.

ViPHP
xTG
ViPHP | 7331 Messages

12 mai 2014, 07:44

Es-tu sûr du chemin vers le fichier ? Et quand je parle de chemin je parle de chemin serveur et non web (http).

Eléphant du PHP | 103 Messages

12 mai 2014, 07:58

Oui, et pour preuve, il m'affiche deux autres lignes identiques (pb de droits) avec des fichiers présents dans l'arborescence aussi, mais pas en cause.

ViPHP
xTG
ViPHP | 7331 Messages

12 mai 2014, 10:13

Ce n'est en fait pas une preuve. J'aurai préféré que tu me dises que d'autres fichiers n'indiquaient pas de problème de droit en fait. ;)
Est-ce le cas ?

Quel est la permission des fichiers impactés ? (dans le cas où tu aurais une mauvaise interprétation des droits)

Eléphant du PHP | 103 Messages

12 mai 2014, 12:00

LE fichier impacté, un fichier nommé "dons.txt" est accessible uniquement en lecture avec ce compte FTP.
J'utilise un compte admin. pour le maintenir à jour.

ViPHP
xTG
ViPHP | 7331 Messages

12 mai 2014, 12:56

Quel est la permission des fichiers impactés ? (dans le cas où tu aurais une mauvaise interprétation des droits)
Cela me semble bizarre que ftp_get doive être sur un compte avec droit en écriture ou bien être l'auteur du fichier pour fonctionner.
Donc je réitère ma question.

Eléphant du PHP | 103 Messages

12 mai 2014, 13:05

Je joints une capture d'écran faite à l'instant, connecté avec le compte en lecture seul :
Capture d'écran 2014-05-12 13.03.47.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

ViPHP
xTG
ViPHP | 7331 Messages

12 mai 2014, 14:53

Il a même mieux que lecture seule.
Le fichier semble avoir les droits en écriture/lecture pour tout le monde (même pour les personnes non identifiées).

J'avoue ne pas comprendre du coup...
J'ai cherché un peu sur le net et personne ne semble remonter de problème avec cette fonction.
Il doit donc y avoir un effet provoqué par autre chose mais quoi...

Eléphant du PHP | 103 Messages

12 mai 2014, 15:03

Récapitulons,

Voici le code PHP actuel, un peu nettoyé par rapport au précèdent :
<?php
// Variables
$ftpip = "notreadresseFTP";
$user = "user";
$pass = "password";
$compte = "web";
$port = "21";
$fichier = 'dons.txt';
$fpdons = 'ftp://'.$user.':'.$pass.'@'.$ftpip.'/'.$compte.'/'.$fichier;

// Moteur
$conn_id = ftp_connect($ftpip);
$login_result = ftp_login($conn_id, $user, $pass);
	// Debug
	echo "Connect&eacute; en tant que : " . $user . "<br/>";

if ((!$conn_id) || (!$login_result)) {
	echo "La connexion FTP a &eacute;chou&eacute;e !<br/>";
	die;
	} 

//On fait la liste des fichier à lire
$buff = ftp_nlist($conn_id, $compte);

for ($i=0; $i<count($buff); $i++){
	$serveur_file = $buff[$i];
	// Tente de télécharger le fichier $serveur_file et de le sauvegarder dans le fichier $monmicro_file 
	$download = ftp_get($conn_id, $fichier, $serveur_file, FTP_ASCII);
	if (!$download) {
		echo "erreur au t&eacute;l&eacute;chargement";
		} 
	else {
		if (!$fp = fopen($fichier,"r")) {
			$erreur = $erreur."non chargement <br/>";
			}
		else {
			while (!feof($fp)) {
				//On traite le fichier
				echo "Test...";
				}
			}
		}
	}
?>
Peut-être cela vient-il de notre nouveau serveur FTP, hébergé sur un NAS Synology.

Un pb d'arborescence ou de nomenclature d'arborescence ?

ViPHP
xTG
ViPHP | 7331 Messages

12 mai 2014, 18:26

Un fopen() mais pas de fclose() associé. C'est peut être le souci si cela survient dès le second fichier ?

Eléphant du PHP | 103 Messages

13 mai 2014, 00:50

Oups, désolé, mauvais copié-collé. Le ftp-close() y est bien sur :
<?php
// Variables
$ftpip = "adresseserveurFTP";
$user = "user";
$pass = "pass";
$compte = "web";
$port = "21";
$fichier = 'dons.txt';
$fpdons = 'ftp://'.$user.':'.$pass.'@'.$ftpip.'/'.$compte.'/'.$fichier;

// Moteur
$conn_id = ftp_connect($ftpip);
$login_result = ftp_login($conn_id, $user, $pass);
	// Debug
	echo "Connect&eacute; en tant que : " . $user . "<br/>";

if ((!$conn_id) || (!$login_result)) {
	echo "La connexion FTP a &eacute;chou&eacute;e !<br/>";
	die;
	} 

//On fait la liste des fichier à lire
$buff = ftp_nlist($conn_id, $compte);

for ($i=0; $i<count($buff); $i++){
	$serveur_file = $buff[$i];
	// Tente de télécharger le fichier $serveur_file et de le sauvegarder dans le fichier $monmicro_file 
	$download = ftp_get($conn_id, $fichier, $serveur_file, FTP_ASCII);
	if (!$download) {
		echo "erreur au t&eacute;l&eacute;chargement";
		} 
	else {
		if (!$fp = fopen($fichier,"r")) {
			$erreur = $erreur."non chargement <br/>";
			}
		else {
			while (!feof($fp)) {
				//On traite le fichier
				echo "Test...";
				}
			}
		}
	}

// Fermeture de la connexion
ftp_close($conn_id);
?>
Cela ne change donc rien dans le cas présent... :(

ViPHP
xTG
ViPHP | 7331 Messages

13 mai 2014, 11:14

Et le fclose() y est-il ? :P
Pas de fopen() sans fclose() !

Eléphant du PHP | 103 Messages

13 mai 2014, 23:19

Ha non, en effet, pas de fclose, même sur l'original... Étrange..

Concrètement, comment dois-je l'intégrer ?