Problème de localisation de fichier avec transmission de variables

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 : Problème de localisation de fichier avec transmission de variables

Problème de localisation de fichier avec transmission de var

par flashy38 » 13 nov. 2008, 15:44

Bonjour,

J'ai un problème vraiment bizarre sur lequel je suis en train de me tirer les cheveux, alors s'il y avait une bonne âme qui pouvait m'aider avant qu'il ne m'en reste plus !!!

J'ai un premier fichier script (test.php) qui me permet d'en lancer un autre (write.php) en tâche de fond avec deux variables à transmettre.

Code de test.php :
<?php
$numfile = $_GET['num'];
$uploadID = $_GET['upload_id'];

exec("/usr/bin/php write.php $numfile $uploadID > /dev/null &");
?>
Code de write.php :
<?php
$ftemp = fopen ("tmp/resultat.txt", "w");

$numfile = $argv[1];
$uploadID = $argv[2];
fwrite ($ftemp, "transmission des données par exec\n\n");

fwrite ($ftemp, "numfile : '$numfile'\n");
fwrite ($ftemp, "uploadID : '$uploadID'\n\n");

require("temp.php");

$fichier = $nom_fichier[$numfile];

fwrite ($ftemp, "fichier : '$fichier'\n\n");
$local_file="uploads/$uploadID/".$fichier;
fwrite ($ftemp, "local_file : '$local_file'\n");
if (is_file($local_file)) {
	fwrite ($ftemp, "local_file '$local_file' existe\n\n");
} else {
	fwrite ($ftemp, "local_file '$local_file' n'existe pas\n\n");
}

$temp_dir = "tmp/".$uploadID;
fwrite ($ftemp, "temp_dir : '$temp_dir'\n");
if (is_dir($temp_dir)) {
	fwrite ($ftemp, "répertoire temp_dir '$temp_dir' existe\n\n");
} else {
	fwrite ($ftemp, "répertoire temp_dir '$temp_dir' n'existe pas\n\n");
}

$file_temp = $temp_dir."/upload_".$fichier.".txt";
fwrite ($ftemp, "file_temp : '$file_temp'\n");
if (is_file($file_temp)) {
	fwrite ($ftemp, "file_temp '$file_temp' existe\n\n");
} else {
	fwrite ($ftemp, "file_temp '$file_temp' n'existe pas\n\n");
}

fwrite ($ftemp, "ecriture via exec OK\n");
fclose ($ftemp);
chmod ("tmp/resultat.txt",0777);
?>
Code de temp.php
<?php
$nom_fichier[0] = 'Fichier_test_1.zip';
$nom_fichier[1] = 'Fichier_test_2.zip';
$nom_fichier[2] = 'Fichier_test_3.zip';
?>
En lançant mon script.php avec les variables (test.php?upload_id=fe77f2cf2562d6c04010296cb400fc5b&num=0), voici ce que j'obtiens dans mon fichier "resultat.txt" :
transmission des données par exec

numfile : '0'
uploadID : 'fe77f2cf2562d6c04010296cb400fc5b'

fichier : 'Fichier_test_1.zip'

local_file : 'uploads/fe77f2cf2562d6c04010296cb400fc5b/Fichier_test_1.zip'
local_file 'uploads/fe77f2cf2562d6c04010296cb400fc5b/Fichier_test_1.zip' existe

temp_dir : 'tmp/fe77f2cf2562d6c04010296cb400fc5b'
répertoire temp_dir 'tmp/fe77f2cf2562d6c04010296cb400fc5b' existe

file_temp : 'tmp/fe77f2cf2562d6c04010296cb400fc5b/upload_Fichier_test_1.zip.txt'
file_temp 'tmp/fe77f2cf2562d6c04010296cb400fc5b/upload_Fichier_test_1.zip.txt' n'existe pas

ecriture via exec OK
Il me dit que mon fichier upload_Fichier_test_1.zip.txt (file_temp) n'existe pas alors qu'il existe bien !!!!




J'ai essayé de modifier le script write.php de cette façon (transmission des données par get sans passer par test.php) :

Code de write.php modifié :
<?php
$ftemp = fopen ("tmp/resultat.txt", "w");

$numfile = $_GET['num'];
$uploadID = $_GET['upload_id'];
fwrite ($ftemp, "transmission des données par get\n\n");

fwrite ($ftemp, "numfile : '$numfile'\n");
fwrite ($ftemp, "uploadID : '$uploadID'\n\n");

require("temp_$uploadID.php");

$fichier = $nom_fichier[$numfile];

fwrite ($ftemp, "fichier : '$fichier'\n\n");
$local_file="uploads/$uploadID/".$fichier;
fwrite ($ftemp, "local_file : '$local_file'\n");
if (is_file($local_file)) {
	fwrite ($ftemp, "local_file '$local_file' existe\n\n");
} else {
	fwrite ($ftemp, "local_file '$local_file' n'existe pas\n\n");
}

$temp_dir = "tmp/".$uploadID;
fwrite ($ftemp, "temp_dir : '$temp_dir'\n");
if (is_dir($temp_dir)) {
	fwrite ($ftemp, "répertoire temp_dir '$temp_dir' existe\n\n");
} else {
	fwrite ($ftemp, "répertoire temp_dir '$temp_dir' n'existe pas\n\n");
}

$file_temp = $temp_dir."/upload_".$fichier.".txt";
fwrite ($ftemp, "file_temp : '$file_temp'\n");
if (is_file($file_temp)) {
	fwrite ($ftemp, "file_temp '$file_temp' existe\n\n");
} else {
	fwrite ($ftemp, "file_temp '$file_temp' n'existe pas\n\n");
}

fwrite ($ftemp, "ecriture via exec OK\n");
fclose ($ftemp);
chmod ("tmp/resultat.txt",0777);
?>
Le script temp.php reste inchangé…

En executant le script write.php modifié (write.php?upload_id=fe77f2cf2562d6c04010296cb400fc5b&num=0), voici ce que contient le fichier resultat.txt :
transmission des données par get

numfile : '0'
uploadID : 'fe77f2cf2562d6c04010296cb400fc5b'

fichier : 'Fichier_test_1.zip'

local_file : 'uploads/fe77f2cf2562d6c04010296cb400fc5b/Fichier_test_1.zip'
local_file 'uploads/fe77f2cf2562d6c04010296cb400fc5b/Fichier_test_1.zip' existe

temp_dir : 'tmp/fe77f2cf2562d6c04010296cb400fc5b'
répertoire temp_dir 'tmp/fe77f2cf2562d6c04010296cb400fc5b' existe

file_temp : 'tmp/fe77f2cf2562d6c04010296cb400fc5b/upload_Fichier_test_1.zip.txt'
file_temp 'tmp/fe77f2cf2562d6c04010296cb400fc5b/upload_Fichier_test_1.zip.txt' existe

ecriture via exec OK
Avec la version modifiée, il trouve bien le fichier upload_Fichier_test_1.zip.txt



Si quelqu'un a une idée pourquoi il ne trouve pas mon fichier avec la première version (bien sûr celle qui m'interesse !!), ce serait vraiment cool…