Apache 向 CGI 传递环境变量

Apache 配置文件:

<VirtualHost www.hwx.com>
    SetEnv VHOST customers
    SetEnv LD_LIBRARY_PATH /lib:/usr/lib:/usr/local/lib
    SetEnv HOME test_home
    SetEnv FUCK /lib:/usr/lib:/usr/local/lib
    ServerAdmin root@localhost
    DocumentRoot /var/www/html/www.hwx.com
    ServerName www.hwx.com
    ErrorLog logs/www.hwx.com-error_log
    CustomLog logs/www.hwx.com-access_log common
</VirtualHost>



C++ CGI 程序:

/*
 * test.cpp
 *
 *  Created on: Jul 12, 2013
 *      Author: hwx
 */

#include <iostream>

#include <stdlib.h>

using namespace std;

#define ENV_NR	5

const string ENV[ ENV_NR ] = {
		"SERVER_SIGNATURE","LD_LIBRARY_PATH","VHOST","HOME","FUCK" };
/*
 * "SERVER_SIGNATURE" 为 CGI 内置环境变量
 * "LD_LIBRARY_PATH","VHOST","HOME","FUCK" 为 在 Apache 的配置文件中
 * 用 "SetEnv" 指令增加的环境变量,但是 "LD_LIBRARY_PATH" 不能成功获取(见输出)
 */

int main ()
{
	cout << "Content-type:text/html\r\n\r\n";
	cout << "<html>\n";
	cout << "<head>\n";
	cout << "<title>CGI Envrionment Variables</title>\n";
	cout << "</head>\n";
	cout << "<body>\n";
	cout << "<table border = \"0\" cellspacing = \"2\">";

	for ( int i = 0; i < ENV_NR; i++ )
	{
		cout << "<tr><td>" << ENV[ i ] << "</td><td>";
		// attempt to retrieve value of environment variable
		char *value = getenv( ENV[ i ].c_str() );
		if ( value != 0 )
		{
			cout << value;
		}
		else
		{
			cout << "Environment variable does not exist.";
		}
		cout << "</td></tr>\n";
	}
	cout << "</table>\n";
	cout << "</body>\n";
	cout << "</html>\n";

	return 0;
}

页面输出:

SERVER_SIGNATURE	Apache/2.2.15 (CentOS) Server at www.hwx.com Port 80
LD_LIBRARY_PATH		Environment variable does not exist.
VHOST			customers
HOME			test_home
FUCK			/lib:/usr/lib:/usr/local/lib



LD_LIBRARY_PATH 为什么不能成功获取,笔者还没找到答案...


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值