[résolu] Tâche Cron et header

Eléphant du PHP | 256 Messages

01 déc. 2011, 11:34

Bonjour,

Je souhaiterai exécuter un script Php grâce à une tâche Cron.

Dans mon fichier, j'indique d'abord l’emplacement de l'exécutable. Jusque là, c'est logique... :)

Ensuite, comme on script utilise des caractères spéciaux, je veux fixer le header en utf-8. Là, Php grogne : Cannot modify header information - headers already sent by....

Si je place le header en première ligne, c'est mon serveur qui n'est pas content, car il ne voit pas Php.

Voici les premières lignes de mon fichier :

Code : Tout sélectionner

#!/usr/local/bin/php5 #php -f /home/data/site/file.php <?php header('Content-Type: text/html; charset=utf-8'); ?>
Aussi vos idées seraient-elles les bienvenues ! :mrgreen:

Merci.

Gaspard
Modifié en dernier par Castor Gaspard le 01 déc. 2011, 13:04, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 déc. 2011, 11:57

salut,

c'pas possible, parce que pour php a partir du moment où tu utilise un truc en dehors de <?php ?> c'est envoie d'entête.

ceci dit je m'interroge sur l'utilité de la chose : pourquoi gérer l'affichage alors que par essence un truc automatique ne sera pas vue par un humain !

p'tet qu'avec plus d'info on pourrais mieux t'aider.

sinon php -f nomdufichier plutot que de l'indiquer dans le fichier ;)


@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

01 déc. 2011, 12:00

Bonjour,

Il serait peut être plus simple de mette usr/local/bin/php5 -f /home/data/site/file.php dans cron ou de créer un script avec cette commande et de l'utiliser dans cron.

Une alternative est de passer par la commande wget qui fait un appel via apache.

Eléphant du PHP | 256 Messages

01 déc. 2011, 12:06

Bonjour;

Merci pour vos réponses rapides.

En fait, oui, Moogli, je comprends ta remarque... Ma tâche Cron vise à alimenter une table Sqlite après interrogation d'un serveur distant, d'où l'intérêt de l'encodage.

Cordialement,

Gaspard

ViPHP
ViPHP | 2577 Messages

01 déc. 2011, 12:35

Bonjour,

La commande header() et juste un envoi d'information à un navigateur. Elle n'a pas d'influence sur l'encodage utilisé par PHP. En fait elle permet d'indiquer au navigateur qu'elle encodage est utilisé par PHP. C'est à priori lié à l'OS ou au fichier PHP.

Si ton script fait uniquement des mises à jour, tu peux faire le retour sous forme texte. Pas la peine de faire le compte-rendu en html.

Pour info, sous Ubuntu il y a 2 "php.ini", un pour apache et un pour la ligne de commande. Cela permet entre autre de ne pas générer les messages d'erreur au format HTML en ligne de commande ou de fixer un temps limite d'exécution différent (d'après ce que j'ai compris...).

Eléphant du PHP | 256 Messages

01 déc. 2011, 13:03

Bonjour,

Merci, Mazarini. Tu as en effet raison. Sans affichage, l'encodage de scaractères semble sans importance selon mes test.

Aussi mon sujet est résolu.

Encore merci.

Gaspard

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 déc. 2011, 14:08

sinon juste pour info, dans ton cas => [url=http://www.php.net_utf8_encode]utf8_encode[/url] semble être une solution, attention il faut être certain que les caractères ne soient pas en utf8 à la base ;)


@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

01 déc. 2011, 15:16

Sauf erreur de ma part, c'est dans la configuration du système que l'on définit le codage des caractères. C'est ce codage qui est utilisé par vi ou par les autres éditeurs. Certain éditeur permettent de choisir le codage d'un fichier.
En général je galère pas mal pour mettre en phase ce genre de chose. Une fois cela fixé, il n'y a pas trop à ce poser de question.

Eléphant du PHP | 256 Messages

01 déc. 2011, 17:17

Moui,

Php est casse-tête pour l'encodage des caractères pour un codeur en herbe, comme moi. :)

On me dit que Php 6 sera plus simple : réalité ou légende ?

Bien à vous,

Gaspard