由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Unix版 - How to set environment variables for CGI scripts?
相关主题
A question about awkAnother simple question
How to redirect error messages to a file?
相关话题的讨论汇总
话题: cgi话题: scripts话题: path话题: variables
进入Unix版参与讨论
1 (共1页)
su
发帖数: 149
1
一个login shell的environment variables可以在诸如
".login"或".cshrc"的scripts中设置。
CGI scripts通常是以nobody的身份运行的,
他们的environment variables应该在哪里设置呢?
比如说,怎样才能为所有的CGI scripts预先
设置好"Path"呢?
l*l
发帖数: 225
2
nobody is a user of your system, so it is the same as
other users when you set env.
example, when you use uncgi, you can export PATH=$PATH:/somepth

【在 su 的大作中提到】
: 一个login shell的environment variables可以在诸如
: ".login"或".cshrc"的scripts中设置。
: CGI scripts通常是以nobody的身份运行的,
: 他们的environment variables应该在哪里设置呢?
: 比如说,怎样才能为所有的CGI scripts预先
: 设置好"Path"呢?

su
发帖数: 149
3
But Where should I put this?
Since the execution of a CGI script is not in a
login shell, no login scipts are executed in advance.

【在 l*l 的大作中提到】
: nobody is a user of your system, so it is the same as
: other users when you set env.
: example, when you use uncgi, you can export PATH=$PATH:/somepth

l*l
发帖数: 225
4
任何的程序都是在一定的环境下运行的, 因此如果你要设置环境
变量, 在相应的CGI程序里设置. 我举的例子是利用UNCGI, 一种
UNIX SHELL CGI,可以这么设置, 同样道理, 用C++写的CGI也
可以采用相应的方法.
不过你说的要设置一个通用的的环境变量, 由余NOBODY没有SHELL因此
比较困难, 你可以尝试更改或者自己写一个受限的SHELL给NOBODY用, 这个
SHELL的环境设置以后就永远起作用. 不管你写什么样的CGI,但是无疑
会大大降低系统的安全性.
下面是我的一个简短的SHELL CGI的开头, 和通常的SHELL一样:
http://people.physics.tamu.edu/llu/ 远程字典和在线画图)
#!/bin/sh
PATH="/bin:/usr/bin:/usr/local/bin:/home/people/llu/bin:."
export PATH
HOME=/www/people/llu/cgi-bin/tmp
export HOME
cd $HOME
rm -rf temp.*
LOGfile=$HOME/log
e

【在 su 的大作中提到】
: But Where should I put this?
: Since the execution of a CGI script is not in a
: login shell, no login scipts are executed in advance.

su
发帖数: 149
5
我们可以写一个简单的CGI script来看一看已被设好的环境变量。
(apache带的"printenv"和"test-cgi"均可以做到)
可以看出"PATH"是被assigned过的。
问题是:他是在哪儿被assigned的?
莫不是在install apache的时候就已经设置好了?

【在 l*l 的大作中提到】
: 任何的程序都是在一定的环境下运行的, 因此如果你要设置环境
: 变量, 在相应的CGI程序里设置. 我举的例子是利用UNCGI, 一种
: UNIX SHELL CGI,可以这么设置, 同样道理, 用C++写的CGI也
: 可以采用相应的方法.
: 不过你说的要设置一个通用的的环境变量, 由余NOBODY没有SHELL因此
: 比较困难, 你可以尝试更改或者自己写一个受限的SHELL给NOBODY用, 这个
: SHELL的环境设置以后就永远起作用. 不管你写什么样的CGI,但是无疑
: 会大大降低系统的安全性.
: 下面是我的一个简短的SHELL CGI的开头, 和通常的SHELL一样:
: http://people.physics.tamu.edu/llu/ 远程字典和在线画图)

su
发帖数: 149
6
好象apache启动时的"PATH"被用在了所有的CGI scripts中,
但其他的environmental variable并没有象"PATH"这样被输出。
不知道可不可以控制被输出到CGI scripts中的env var.
我没有明白你的意思。即使真有这样一个shell,apache又怎么会知
道它的
存在。且一个CGI script并一定要在一个shell中运行,它本身完全
可以是
一个可执行程序。
v*****r
发帖数: 1119
7
是设在 global profile 里 (/etc/profile or /etc/csh.profile) 不行吗?

【在 su 的大作中提到】
: 一个login shell的environment variables可以在诸如
: ".login"或".cshrc"的scripts中设置。
: CGI scripts通常是以nobody的身份运行的,
: 他们的environment variables应该在哪里设置呢?
: 比如说,怎样才能为所有的CGI scripts预先
: 设置好"Path"呢?

T**********l
发帖数: 12149
8


【在 su 的大作中提到】
: 一个login shell的environment variables可以在诸如
: ".login"或".cshrc"的scripts中设置。
: CGI scripts通常是以nobody的身份运行的,
: 他们的environment variables应该在哪里设置呢?
: 比如说,怎样才能为所有的CGI scripts预先
: 设置好"Path"呢?

1 (共1页)
进入Unix版参与讨论
相关主题
A question about awkAnother simple question
How to redirect error messages to a file?
相关话题的讨论汇总
话题: cgi话题: scripts话题: path话题: variables