Bonjour
J'ai une debian une sid (on verra plus tard pour la stable) avec un serveur apache.
Je souhaite afficher une page avec python3 (cgi).
Voici un ecm
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cgi,cgitb
cgitb.enable()
print('Content-Type: text/html;charset=utf-8')
print('''
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body class="index">
<div id="header">
<h1>Test utf8 et python3</h1>
</div>
<div class="coeur">
<p>aaaaaaaé</p>
</div>
</body>
</html>
''')
Jobtiens comme erreur bash
[Fri Jun 15 11:59:13 2012] [error] [client ::1] (13)Permission non accord\xc3\xa9e: exec of '/home/jeanclaude/Documents/apache/python/test.py3' failed
[Fri Jun 15 11:59:13 2012] [error] [client ::1] Premature end of script headers: test.py3
évidemment c'est à cause de la lettre é (si je l'enlève il n'y a pas de problème).
Ma machine est en utf8j'utilise vim pour écrire.
Est ce que j'ai fait une faute dans mon ecm?
Merci de m'aider.
edit: la solution est de rajouter dans sa conf d'apachepython
AddDefaultCharset UTF-8
SetEnv PYTHONIOENCODING utf8
# sceptique
Posté par goeb . Évalué à 2.
Je suis sceptique sur la raison que tu invoques : "à cause de la lettre é".
Peux-tu vérifier :
- les droits d'exécution (ls -l /home/jeanclaude/Documents/apache/python/test.py)
- si ton programme fonctionne tout seul (sans Apache) :
/home/jeanclaude/Documents/apache/python/test.py
puis:
python3 /home/jeanclaude/Documents/apache/python/test.py
[^] # Re: sceptique
Posté par ze_lionix (site web personnel) . Évalué à 1.
Et vérifie aussi que tu as bien mis dans la conf apache le
Options +ExecCGI
sur le répertoire en question avec les baslises Directory…
Sinon pour info un accent aigue ca se met & eacute; ( sans l'espace) en html mister !
Fuse : j'en Use et Abuse !
[^] # Re: sceptique
Posté par jean_claude (site web personnel) . Évalué à 1.
voila ce j'ai
Alias /python /home/jeanclaude/Documents/apache/python
<Directory /home/jeanclaude/Documents/apache/python>
Options Indexes FollowSymLinks MultiViews ExecCGI
DirectoryIndex index.py
AddHandler cgi-script .cgi .py .py2 .py3
AllowOverride None
Order allow,deny
allow from all
</Directory>
pour mon fichier test.py3
$ ll test.py3
-rwxr-xr-x 1 jeanclaude jeanclaude 379 juin 15 13:50 test.py3
idem ca ne fonctionne pas si je fais $ chown www-data:www-data test.py3
Vous pensez à des problèmes de droit d'accord mais pourquoi alors cela fonction que il n'y a pas la lettre é.
Bon tu as raison je dois mettre & eacute.
Est ce que ecm est bon?
existe un bibliothèque python pour transformer é& eacute? je vais regarder de ce coté.
[^] # Je suis nul
Posté par jean_claude (site web personnel) . Évalué à 0.
oh oui, je suis nul c'était que ca
remplacer é par & eacute; !!!!!!!!!!!!!!!!!!!! pffffffff
donc je repose la question y a t il en python quelque chose pour convertir en code html?
merci encore
[^] # Re: Je suis nul
Posté par lolop (site web personnel) . Évalué à 2.
Pour convertir QUOI en code HTML ?
Si c'est juste pour échapper les caractères (entre autre &), tu peux utiliser cgi.escape() sur le contenu à échapper (donc pas sur toute la page d'un coup, mais sur les parties contenu et attributs HTML).
Sinon, pour tous les caractères accentués, symboles, marques… si tu indiques utf8, tu dois pouvoir les générer directement à ce format dans ton document sans avoir à te taper des
& eacute ;
(sinon à quoi ça sert d'encoder en utf8?).Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # problème contourné mais pas réglé
Posté par jean_claude (site web personnel) . Évalué à 0.
J'ai réglé ce que je voulais faire mon ordinateur
Je pensais bien
je vais cependant regarder cgi.escape()
sinon bien sur je dois pouvoir écrire é et non & aecute c'est pourquoi j'ai été surpris que mon ecm ne marche pas avec python3
merci de m'avoir consacré un peu de ton temps.
[^] # Re: sceptique
Posté par jean_claude (site web personnel) . Évalué à 0.
Re bonjour
Mon programme fonctionne bien sans apache et quand je fais $ python3 test.py3 > test2.html la page se visualise bien.
# Au cas où
Posté par lolop (site web personnel) . Évalué à 2.
Je ne suis pas expert du CGI sous Python3, une question:
Qui gère l'encodage de la réponse vers utf8 ?
Sinon, ton erreur semble en effet n'avoir aucun rapport avec l'encodage, mais avec une "simple" interdiction d'exécution.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Un complément
Posté par lolop (site web personnel) . Évalué à 2.
Sur le problème de l'encodage du contenu dans une réponse sur stackoverflow avec Python 3 CGI encoding
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Un complément
Posté par jean_claude (site web personnel) . Évalué à 0.
Effectivement, ça a l'air intéressant, je vais approfondir.
merci à vous
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.