Bonjour,
J'ai un problème avec mon script en Python que je cherche à exécuter au sein d'un script php.
Le script fonctionne très bien en local, et sur la machine distante quand je me connecte via SSH ou en local sur la machine.
La machine en question est un serveur nas sous debian 8 sur laquelle j'exécute un serveur web (Apache) + PHP etc...
Lorsque j'exécute le script dans mon serveur apache voici le message d'erreur que j'obtiens :
Voici mon script PythonTraceback (most recent call last): File "traitement_ARVI.py", line 12, infor row in reader: File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
et voici le script PHP qui l'appelle :
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
45
46
47
48
49
50
51
52
53
54
55 # coding: utf-8 import csv import glob import re for filename in glob.glob('*.csv'): with open(filename, newline='') as monFichierEntre: reader = csv.reader(monFichierEntre, delimiter=';', doublequote=False) nom_sortie='sortie_'+filename with open(nom_sortie,'w',newline='') as monFichierSortie: writer = csv.writer(monFichierSortie, delimiter=';', quoting=csv.QUOTE_NONE, escapechar='', quotechar='') for row in reader: # On ne garde que le format bouteille if row[4]=='75': formatb='BO' # Nom du chateau chateau=row[2]+' '+row[3] chateau=chateau.replace('é','e') chateau=chateau.replace('è','e') chateau=chateau.replace('â','a') chateau=chateau.replace('É','E') chateau=chateau.replace('"','') chateau=chateau.replace(',','') chateau=chateau.replace('.','') #chateau=re.sub(r'[0-9]','',chateau) # année if row[0]=='0': annee='2014' else: annee=row[0] # Prix prix=row[7] # quantite quantite='0' # conditionnement conditionnement='CBO12' # commentaires (on met la quantité et les commentaires) commentaires='QTE : '+row[5] # tarif officieux officieux='1' else : chateau='' annee='' formatb='' prix='' conditionnement='' quantite='' commentaires='' officieux='' # On fabrique la nouvelle ligne dans l'ordre voulu trou='' newRow=[chateau,annee,formatb,prix,quantite,conditionnement,commentaires,officieux,trou,trou] writer.writerow(newRow) monFichierEntre.close()
Code html : 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 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>TRAITEMENT TARIFS</title> </head> <body> <?php echo shell_exec('sudo python3 traitement_ARVI.py 2>&1'); $output = shell_exec('ls -l'); $user = shell_exec('sudo id'); echo "<pre>$output</pre>"; echo "<pre>$user</pre>"; ?> </body> </html>
Apres avoir longuement fouillé sur les différents forums, il s'agirait d'un problème d'encodage en UTF-8 qui ne fonctionnerait pas avec Apache ?
En vous remerciant par avance pour toute l'aide que vous voudrez bien m'apporter![]()
Partager