Re: var. d'environnement

2002-11-01 Par sujet Daniel Cordey
On Thursday 31 October 2002 18:16, Francois Deppierraz wrote:

> > Rajoute quelques lignes comme :
> > export FOO="BAR"
>
> Ca doit aussi être possible d'utiliser SetEnv dans la conf d'Apache,
> attention il faut que mod_env soit loadé ou compilé en dur.

Oui, c'est utile pour définir des constantes et l'on ne peut pas l'utiliser 
pour passer des valeurs à d'autres process, exepté des process "fils". Or, 
les "programmes" PHP sont en fait interprétés par les N process du serveur 
Web (ou threads) et l'environement du programme PHP n'est pas exporté.

Daniel

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Francois Deppierraz
On Thu, Oct 31, 2002 at 12:51:04AM +0100, Florian Blaser wrote:

> Rajoute quelques lignes comme :
> export FOO="BAR"

Ca doit aussi être possible d'utiliser SetEnv dans la conf d'Apache,
attention il faut que mod_env soit loadé ou compilé en dur.
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Pascal Perez - LHA
> Tu devrais pouvoir faire ce que tu veux en modifiant le script de
démarrage de
> apache (Je crois que c'est /etc/rc.d/apache sous RH. Sous debian, c'est
> /etc/init.d/apache) :
> Rajoute quelques lignes comme :
> export FOO="BAR"
> dans ce fichier, et tu devrais obtenir le résultat escompté avec
> print($FOO);
> ?>

c'est exactement ce que je cherhais ;) ! Merci beaucoup, ça marche à
nerveille

> HTH,
It does a lot !

> Florian
Pascal

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Pascal Perez - LHA
> Pour "véhiculer" des valeusr entre mes pages, je stocke les données dans
un
> fichier que je relis à chaque fois. Je fais ceci pour éviter d'utiliser
les
> cookies qui sont parfois bloqués par certaines sociétés. Toutefois, ce
sont
> les cookies qui sont le plus adaptés à faire ce genre de chose. Donc, si
tu
> peux te le permettre, utilise des cookies.
Pour l'instant c'est ce que je fais mais cela me paraît une perte de temps
de relire le fichier de configuration à chaque loading de page

Pascal

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Martial Guex
Le Mercredi 30 Octobre 2002 19:04, Pascal Perez - LHA a écrit :
> Bonjour,
>
> J'ai un petit problème que je n'arrive pas à résoudre j'ai plusieurs
> scripts PHP qui demandent tout le temps les même variables et j'aimerais
> faire en sorte qu'elles deviennent des variables d'environnement au même
> titre que, par ex., $HOSTNAME ou $MACHTYPE.

Salut,
Tu peu utiliser les fonctionaliters de partage mémoire ipc, ceci te permet de 
créer un segment mémoire patageable par plusieurs processus, ces segements 
sont indentifié par un numéros.
Pour ceci php propose les fonctions décrites à la page internet suivante: 
http://www.php.net/manual/fr/ref.sem.php .
Le seul petit problème et de trouver un numéros (clés de la memoire) qui n'est 
et ne sera pas utiliser par d'autres applications. Avec php4 > 4.2 tu peus 
utiliser la function ftok sinon faut la faire au pif en regardant les numéros 
déjà utiliser avec la commande cat /proc/sysvipc/sh ou ipcs.

J'ai mis un petit example ci dessous qui fonctionne chez moi, il suffit de 
d'appeler le script depuis un explorateur avec optionnelement le parametre 
oper=init pour réinitiliser le conteur ( http:///.php?oper=init). Tu 
peus également utiliser la commande $php .php [init] .
Par ailleur rien n'empèche d'utiliser d'autre langages c (fonctions shmget, 
shmat) pour acceder au même segment mémoire mais dans ce cas il faudra  
regarder comment php enregistre ces variables dans le segment memoire.
Naturelement ce segment se volatilise si l'ordi s'arrete ou si tu utilise la 
commande $ipcrm sur le segment mais tu peus faire un petit script appeler au 
shutdown qui sauve la valeur et un autre qui la restore au boot.
A+
Martial

Example de script php4
= 4.2 $shmkey = ftok(
//  $HTTP_SERVER_VARS["SCRIPT_FILENAME"],"smhtest");
$shmkey = 0x100;
$shmid = shm_attach ( $shmkey, 100, 0600);
$shmvarkey = 0;
if ((isset($argv[1]) && $argv[1] == "init") || 
(isset($oper) && $oper == 'init')){
$cnt = 0;
shm_put_var( $shmid, $shmvarkey, $cnt);
}
$cnt = shm_get_var ( $shmid, 0);
echo "Valeur du compteur global = $cnt\n";
$cnt++;
shm_put_var( $shmid, $shmvarkey, $cnt);
shm_detach ( $shmid ); // optionnel car le detach se fait d'office
   // quand le process s'arrete.
?>

-- 
MuTECH
Martial Guex
Rue des Alpes
1452 Les Rasses
Switzerland

Tel: +41 (24) 454 46 35
GSM: +41 79  473 16 39
Fax: +41 (24) 454 46 32
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Daniel Cordey
On Wednesday 30 October 2002 19:35, Pascal Perez - LHA wrote:
> > Donc le but c'est que ce soit le système qui donne la valeur ? Ou que
> > la valeur persiste entre les pages ?
>
> Le but c'est que la valeur persite entre les pages et pendant tout le temps
> où Apache est up... et qu'elles soient réinitialisée quand Apache démarre

Pour "véhiculer" des valeusr entre mes pages, je stocke les données dans un 
fichier que je relis à chaque fois. Je fais ceci pour éviter d'utiliser les 
cookies qui sont parfois bloqués par certaines sociétés. Toutefois, ce sont 
les cookies qui sont le plus adaptés à faire ce genre de chose. Donc, si tu 
peux te le permettre, utilise des cookies.

Daniel

PS: setenv() ne fonctionne que pour le process courant et ses déscendants. Or, 
dans un serveur web (Apache), le programmeur n'a pas la maîtrise des process 
(multi-thread, multiprocess, etc.) et ne peut donc pas garantir la hiérarchie 
d'éxécution.
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-31 Par sujet Marc SCHAEFER
On Wed, 30 Oct 2002, Pascal Perez - LHA wrote:

> J'ai un petit problème que je n'arrive pas à résoudre j'ai plusieurs
> scripts PHP qui demandent tout le temps les même variables et j'aimerais
> faire en sorte qu'elles deviennent des variables d'environnement au même
> titre que, par ex., $HOSTNAME ou $MACHTYPE.

Sachant qu'Apache comporte plusieurs *processus*, mettre un setenv() dans
un processus ne permettra pas de le lire dans un autre. En Apache 2.0, vu
qu'il s'agit de threads, on peut imaginer que cela devienne possible.


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Florian Blaser
Hello Pascal !

Tu devrais pouvoir faire ce que tu veux en modifiant le script de démarrage de 
apache (Je crois que c'est /etc/rc.d/apache sous RH. Sous debian, c'est 
/etc/init.d/apache) :
Rajoute quelques lignes comme :
export FOO="BAR"
dans ce fichier, et tu devrais obtenir le résultat escompté avec


HTH,
Florian

Le Mercredi, 30 Octobre 2002 19.04, Pascal Perez - LHA a écrit :
> Bonjour,
>
> J'ai un petit problème que je n'arrive pas à résoudre j'ai plusieurs
> scripts PHP qui demandent tout le temps les même variables et j'aimerais
> faire en sorte qu'elles deviennent des variables d'environnement au même
> titre que, par ex., $HOSTNAME ou $MACHTYPE.
>
> j'ai cherché du côté de apache.org et php.net mais je n'ai trouvé... j'ai
> aussi essayé de faire :
> #/usr/bin/env MAVARIABLE=mavaleur
>
> puis dans un script test :
>  print($MAVARIABLE);
> print($PHP_MAVARIABLE);  // -> php.ini > safe_mode_allowed_env_vars = PHP_
> ?>
>
> mais rien n'y fait...
>
> quelqu'un aurait une piste ?
>
> Pascal

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Sebastien Cevey
On Wed, Oct 30, 2002 at 07:35:07PM +0100, Pascal Perez - LHA wrote:

> > Donc le but c'est que ce soit le système qui donne la valeur ? Ou que
> > la valeur persiste entre les pages ?
>
> Le but c'est que la valeur persite entre les pages et pendant tout le temps
> où Apache est up... et qu'elles soient réinitialisée quand Apache démarre
> 
> > Dans le deuxieme cas, tu pourrais jeter un oeil du coté des sessions.

Euh les sessions permettent simplement de sauver des données PAR USER,
donc par exemple pour logger quelqu'un pour la durée de la session
courante, etc.

Donc les données ne sont ni partagées entre les utilisateurs, ni
persistantes.


Ca me semble pas vraiment être ce que tu veux faire.
Une valeur automatiquement réinitialisée à chaque reboot de Apache,
euh ..

Bah je maintiens que getenv() me semble approprié pour "rappatrier" la
valeur, par contre pour l'initialiser c'est une autre histoire (je
suis meme pas sur que cela devrait être permis).

putenv("FOO=bar");

permet de modifier la valeur d'une var d'environnement mais ce
uniquement pour la page en cours, donc pas très utile dans ce cas.


Pour le moment, je sèche là ...

-- 
Sebastien Cevey <[EMAIL PROTECTED]>
Cine7 - www.cine7.net
Milcis - www.milcis.net
ICQ: 48895760

" I do wish we could chat longer, but I'm having an old friend for dinner. "
Anthony Hopkins (Hannibal Lecter) [ The Silence Of The Lambs ]
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Pascal Perez - LHA
> Donc le but c'est que ce soit le système qui donne la valeur ? Ou que
> la valeur persiste entre les pages ?
Le but c'est que la valeur persite entre les pages et pendant tout le temps
où Apache est up... et qu'elles soient réinitialisée quand Apache démarre

> Dans le deuxieme cas, tu pourrais jeter un oeil du coté des sessions.
ok! merci...

Pascal

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Sebastien Cevey
On Wed, Oct 30, 2002 at 07:18:33PM +0100, Pascal Perez - LHA wrote:

> > Mais je pense que tu cherches plutot qqch comme:
> > $pwd = getenv("PWD");
>
> Pas vraiment si je fais un getenv($???) je perd du temps et surtout je
> le fais à chaque loading de script alors que si elles étaient déjà chargées
> dans la mémoire (ex. $GLOBALS[PHP_SELF]) elles seraient (les variables)
> accessibles directement.

Donc le but c'est que ce soit le système qui donne la valeur ? Ou que
la valeur persiste entre les pages ?

Dans le deuxieme cas, tu pourrais jeter un oeil du coté des sessions.

Ou alors j'ai toujours pas compris ce que tu veux faire :)

-- 
Sebastien Cevey <[EMAIL PROTECTED]>
Cine7 - www.cine7.net
Milcis - www.milcis.net
ICQ: 48895760

" I'd fight Gandhi. "
Edward Norton (Jack) [ Fight Club ]
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Pascal Perez - LHA
> Mais je pense que tu cherches plutot qqch comme:
> $pwd = getenv("PWD");
Pas vraiment si je fais un getenv($???) je perd du temps et surtout je
le fais à chaque loading de script alors que si elles étaient déjà chargées
dans la mémoire (ex. $GLOBALS[PHP_SELF]) elles seraient (les variables)
accessibles directement.

> #/usr/bin/env MAVARIABLE=mavaleur
en fait plutôt:
#export MAVARIABLE=mavaleur
mais ça ne marche pas non plus,

Pascal

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: var. d'environnement

2002-10-30 Par sujet Sebastien Cevey
On Wed, Oct 30, 2002 at 07:04:13PM +0100, Pascal Perez - LHA wrote:

> J'ai un petit problème que je n'arrive pas à résoudre j'ai plusieurs
> scripts PHP qui demandent tout le temps les même variables et j'aimerais
> faire en sorte qu'elles deviennent des variables d'environnement au même
> titre que, par ex., $HOSTNAME ou $MACHTYPE.

Bon il y a les constantes:

define(HELLO, "world");

Mais je pense que tu cherches plutot qqch comme:

$pwd = getenv("PWD");


Mais par contre je crois pas que ya moyen de les modifier, c'est des
données persistantes entre les pages ?

Précise pourquoi les solutions ci-dessus marchent pas (si c'est le
cas) pour qu'on puisse chercher une autre solution ;)

-- 
Sebastien Cevey <[EMAIL PROTECTED]>
Cine7 - www.cine7.net
Milcis - www.milcis.net
ICQ: 48895760

" - Is that your blood?  - Some of it, yeah. "
Edward Norton (Jack) [ Fight Club ]
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.