我有一个网站,基本上设置如下:client_name.website.com
...其中clientname实际上是一个通配符.对于每个新客户,我基本上都创建了一个子域.
我需要直接从Apache自动获取客户端名称信息.例如,如果有人来访:client1.website.com ...我想让apache为我做一个SetEnv CLIENT_NAME client1.
由于我使用通配符,如果动态完成此SetEnv会很好.对于大量客户来说真的很实用.
你会如何实现这一目标?提前致谢.
我需要从C/C++程序在Bash环境中定义一个Bash函数.在shellshock bug 之前,我可以用这种方式定义一个函数:
my_func='() { echo "This is my function";}'
Run Code Online (Sandbox Code Playgroud)
或等同于C程序:
setenv("my_func", "() { echo \"This is my function\";}", 1);
Run Code Online (Sandbox Code Playgroud)
要么
putenv("my_func=() { echo \"This is my function\";}");
Run Code Online (Sandbox Code Playgroud)
但是使用修复了shellshock的Bash版本,我无法管理如何在环境中定义我的函数.
奇怪的是,如果我运行env,我可以看到我在环境中定义的函数,但如果我调用它,Bash说它不存在.
提前致谢
我有下面的方法,它正确地将ret值设置为0(表示setenv成功),但是当我检查这个环境变量是否实际设置时,它不存在.为什么会这样?
void Class::mysetenv(char* a, char* b)
{
if(a==0 || b==0)
return;
int ret = setenv(strdup(a), strdup(b), 1);
printf("ret: %d %s %s\n", ret, a, b);
}
Run Code Online (Sandbox Code Playgroud) 目前我有几个catalina基地配置了以下目录,
conf日志服务器webapps工作
bin,lib和common目录都在$ CATALINA_HOME中.
我现在需要在bin目录中添加setenv.sh文件,但我不希望它被所有catalina基础使用.要做到这一点,我想在catalina_base上添加bin diretory,我想要获取setenv.sh文件.bin目录只包含setenv.sh文件,没有其他内容.其他所有内容仍然在$ CATALINA_HOME/bin /(即startup.sh catalina.sh shutdown.sh等)
这样做会有副作用吗?tomcat在启动时可以同时使用$ CATALINA_BASE/bin /和$ CATALINA_HOME/bin吗?
我使用 setenv 动态分配文件名,如下所示:
setenv("file.name",filename.c_str,1);
Run Code Online (Sandbox Code Playgroud)
我很好奇这是否是每个进程的?
如果我有多个进程运行此代码但采用不同的文件名,是否会发生任何冲突?
可以说我有流程1
setenv("file.name",filename1.c_str,1);
Run Code Online (Sandbox Code Playgroud)
和过程2
setenv("file.name",filename1.c_str,1);
Run Code Online (Sandbox Code Playgroud)
我这样做会有什么问题吗?
谢谢。
我无法让它工作.htaccess的这部分,IfDefine永不运行.我做错了什么,setenvif启用了mod.
RewriteBase /
SetEnvIf HTTP_HOST ^localhost$ local
<IfDefine local>
RewriteBase /codeigniter-app/
</IfDefine>
SetEnvIf HTTP_HOST ^testing.alex.com$ testing
<IfDefine testing>
RewriteBase /app/
</IfDefine>
Run Code Online (Sandbox Code Playgroud)
这是基于:使用mod_rewrite可以在RewriteCond中指定RewriteBase吗?
编辑: 完成上述任何其他方式?
我在apache config中有两个环境变量,我想将它们连接成一个新的环境变量。这可能吗?
我意识到这是行不通的,但是它展示了我所追求的那种东西:
SetEnv one foo
SetEnv two bar
SetEnv three one+two
Run Code Online (Sandbox Code Playgroud)
...然后“三”的值将为“ foobar”
apache mod-rewrite concatenation environment-variables setenv
我在Linux中开发了一个Tcl/Tk脚本工具.为了运行该工具,每次我需要在shell中设置这样的环境变量:
setenv LD_LIBRARY_PATH /opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib:/abc/software/new_2015/GE/tcl_tk/lib64:/abc/software/new_2015/GE/tcl_tk/lib64
Run Code Online (Sandbox Code Playgroud)
然后使用"wish"解释器启动我的工具:
/abc/software/new2015/GE/tcl_tk/bin/wish mytool.tk
Run Code Online (Sandbox Code Playgroud)
为了使它易于使用,我想设计一个shell脚本"abc_wish"并将上面的命令放入:
#!/bin/sh
setenv LD_LIBRARY_PATH /opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib:/abc/software/new_2015/GE/tcl_tk/lib64:/abc/software/new_2015/GE/tcl_tk/lib64
wish="/abc/software/new2015/GE/tcl_tk/bin/wish"
exec $wish $@
Run Code Online (Sandbox Code Playgroud)
然后我需要运行:
./abc_wish mytool.tk
Run Code Online (Sandbox Code Playgroud)
但错误消息显示找不到setenv命令!我对这样的系统问题全新,需要一些关于这些东西的帮助.希望我已经清楚地表明了这个问题.
我正在使用c ++和setenv来设置一个变量,如下面的程序所示:
setenv("TEST", "$HOME/test", 1);
char* val = getenv("TEST");
printf("TEST=%s", val);
Run Code Online (Sandbox Code Playgroud)
我得到的输出是“ TEST = $ HOME / test”。但是我希望输出像“ TEST = / home / toboxos / test”。使用linux手册没有任何帮助。是否有任何解决环境变量的功能,或者我自己完成此操作?
在bash中,setenv返回“找不到命令...”。我(认为我)可以替换setenv MYPATH /path/to/something/为
MYPATH=/path/to/something/
export MYPATH
Run Code Online (Sandbox Code Playgroud)
但是我可以在Fedora中使用一个命令执行与以下命令相同的操作setenv吗?