Re: var. d'environnement
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
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
> 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
> 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
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
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
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
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
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
> 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
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
> 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
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.
var. d'environnement
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 : 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.