Apache 向 CGI 传递环境变量

来源:互联网 发布:狄克斯特拉算法思想 编辑:程序博客网 时间:2024/05/23 09:54

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_NR5const 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 variablechar *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_SIGNATUREApache/2.2.15 (CentOS) Server at www.hwx.com Port 80LD_LIBRARY_PATHEnvironment variable does not exist.VHOSTcustomersHOMEtest_homeFUCK/lib:/usr/lib:/usr/local/lib



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