Discussion:
[Wt-interest] Wt 3.3.4 Environment inconsistency (fwd)
B.V. Raghav
2015-06-07 02:59:31 UTC
Permalink
Hi..

Here is the apache conf for the server

--- conf starts
<IfModule mod_fcgid.c>
SocketPath /var/lib/apache2/fcgid/sock
IdleTimeout -1
ProcessLifeTime -1
MaxProcessCount 10
DefaultMaxClassProcessCount 10
DefaultMinClassProcessCount 1
FcgidInitialEnv WT_APP_ROOT /home/bvr/wt/approot
</IfModule>

<DirectoryMatch "^/home/.+/public_html/.*$">
AddHandler fcgid-script .wt
</DirectoryMatch>

<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNOEXEC ExecCGI
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
--- conf ends

Here is the htaccess on the deployment folder
--- .htaccess starts
SetEnv WT_APP_ROOT /home/bvr/wt/approot

--- .htaccess ends

Are there any insights

r
Date: Sun, 7 Jun 2015 02:32:23
Subject: Wt 3.3.4 Environment inconsistency
Hi..
appRoot is read from the SetEnv WT_APP_ROOT as defined in .htaccess
But the same is not propogated to the WApplication when run under mod_fcgid
--- code starts
std::string config_file = "Config File: ";
config_file += env.getCgiValue("WT_CONFIG_XML");
std::string app_root_path = "App Root: ";
app_root_path += env.getCgiValue("WT_APP_ROOT");
root()->addWidget(new Wt::WText("<strong>Cgi Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(config_file));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(app_root_path));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Wt Env Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("appRoot: " + WApplication::appRoot()));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("docRoot: " + WApplication::docRoot()));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("env::appRoot: " + environment().getCgiValue("WT_APP_ROOT")));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Server Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("appRoot: " + Wt::WServer::instance()->appRoot()));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Nascent Env</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(::getenv("WT_APP_ROOT")));
// root()->addWidget(new Wt::WText(std::string("appRoot: ") + ::getenv("WT_APP_ROOT")));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(::getenv("WT_CONFIG_XML")));
// root()->addWidget(new Wt::WText(std::string("configFile: ") + ::getenv("WT_CONFIG_XML")));
--- code ends
--- output starts
Cgi Values
App Root: /home/bvr/wt/approot
Wt Env Values
docRoot: /var/www/html
env::appRoot: /home/bvr/wt/approot
Server Values
Nascent Env
--- output ends
::getenv outputs nothing
getCgiValue holds the value,
but WApplication->appRoot() is empty
The config is Wt 3.3.4 + Boost v1.58 + GCC-4.9.2 + Apache 2.4 + mod_fcgid v2.3.9
Where lies the problem?
r
--
(B.V. Raghav)
P: +91-9450988137
------------------------------------------------------------------------------
B.V. Raghav
2015-06-07 03:12:26 UTC
Permalink
Hi,

The was a change in debian way of apache configuration in 2.4.1, that took effect when I upgraded the package. Now things work fine, when I had moved all my configurations from conf.d to conf-available and subsequent invokation of 'a2enconf'
From the changelog hosted at http://metadata.ftp-master.debian.org/changelogs/main/a/apache2/unstable_changelog
--- Changelog Snippet Starts
+ Move per-site global configuration from conf.d to conf-available and
manage it similar to modules and sites. To do so, the new tools
"a2enconf" and "a2disconf" are provided. Moreover, such configuration
files need to have a .conf suffix now. The following configuration
files are enabled by default: charset localized-error-pages
other-vhosts-access-log security. These were enabled by default
previously, too (Closes: #620347, Closes: #605227).
This holds for apache2-doc as well, which is still enabled by default but
can be disabled easily anytime by using a2disconf (Closes: #604980).

--- Changelog Snippet Ends

The issue is closed. Thanks for all your help

r
Date: Sun, 7 Jun 2015 08:26:58
Subject: Re: Wt 3.3.4 Environment inconsistency
Hi..
Here is the apache conf for the server
--- conf starts
<IfModule mod_fcgid.c>
SocketPath /var/lib/apache2/fcgid/sock
IdleTimeout -1
ProcessLifeTime -1
MaxProcessCount 10
DefaultMaxClassProcessCount 10
DefaultMinClassProcessCount 1
FcgidInitialEnv WT_APP_ROOT /home/bvr/wt/approot
</IfModule>
<DirectoryMatch "^/home/.+/public_html/.*$">
AddHandler fcgid-script .wt
</DirectoryMatch>
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNOEXEC ExecCGI
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
--- conf ends
Here is the htaccess on the deployment folder
--- .htaccess starts
SetEnv WT_APP_ROOT /home/bvr/wt/approot
--- .htaccess ends
Are there any insights
r
Date: Sun, 7 Jun 2015 02:32:23
Subject: Wt 3.3.4 Environment inconsistency
Hi..
appRoot is read from the SetEnv WT_APP_ROOT as defined in .htaccess
But the same is not propogated to the WApplication when run under mod_fcgid
--- code starts
std::string config_file = "Config File: ";
config_file += env.getCgiValue("WT_CONFIG_XML");
std::string app_root_path = "App Root: ";
app_root_path += env.getCgiValue("WT_APP_ROOT");
root()->addWidget(new Wt::WText("<strong>Cgi Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(config_file));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(app_root_path));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Wt Env Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("appRoot: " + WApplication::appRoot()));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("docRoot: " + WApplication::docRoot()));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("env::appRoot: " + environment().getCgiValue("WT_APP_ROOT")));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Server Values</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("appRoot: " + Wt::WServer::instance()->appRoot()));
for (int i = 0; i < 4; ++i)
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText("<strong>Nascent Env</strong>"));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(::getenv("WT_APP_ROOT")));
// root()->addWidget(new Wt::WText(std::string("appRoot: ") + ::getenv("WT_APP_ROOT")));
root()->addWidget(new Wt::WBreak());
root()->addWidget(new Wt::WText(::getenv("WT_CONFIG_XML")));
// root()->addWidget(new Wt::WText(std::string("configFile: ") + ::getenv("WT_CONFIG_XML")));
--- code ends
--- output starts
Cgi Values
App Root: /home/bvr/wt/approot
Wt Env Values
docRoot: /var/www/html
env::appRoot: /home/bvr/wt/approot
Server Values
Nascent Env
--- output ends
::getenv outputs nothing
getCgiValue holds the value,
but WApplication->appRoot() is empty
The config is Wt 3.3.4 + Boost v1.58 + GCC-4.9.2 + Apache 2.4 + mod_fcgid v2.3.9
Where lies the problem?
r
--
(B.V. Raghav)
P: +91-9450988137
(B.V. Raghav)
Doctoral Research Scholar,
Design Programme, IIT Kanpur
Ph: +91-9450988137
--
(B.V. Raghav)


------------------------------------------------------------------------------
Loading...