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 de write.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 temp.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); ?>
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" :
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'; ?>
Il me dit que mon fichier upload_Fichier_test_1.zip.txt (file_temp) n'existe pas alors qu'il existe bien !!!!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
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é :
Le script temp.php reste inchangé…
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); ?>
En executant le script write.php modifié (write.php?upload_id=fe77f2cf2562d6c04010296cb400fc5b&num=0), voici ce que contient le fichier resultat.txt :
Avec la version modifiée, il trouve bien le fichier upload_Fichier_test_1.zip.txttransmission 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
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…
Partager