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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?php
$numfile = $_GET['num'];
$uploadID = $_GET['upload_id'];
 
exec("/usr/bin/php write.php $numfile $uploadID > /dev/null &");
?>
Code de write.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?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é :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?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…