* Glenn wrote:
> 1) Why does includes "virtual" sometimes fail with
> "unable to include potential exec \"%s\" in parsed file %s"
> when Options IncludesNoEXEC is used? Why is this check performed?
> What is the reasoning behind it?
Not to execute anything, as the option name may imply ;-)
Anything may be a command, a CGI script etc.
> - if (!error_fmt && (ctx->flags & FLAG_NO_EXEC) &&
> - rr->content_type &&
> - (strncmp(rr->content_type, "text/", 5))) {
> - error_fmt = "unable to include potential exec \"%s\" "
> - "in parsed file %s";
> - }
Hmm. Removing an insufficient check doesn't look reasonable to me. We should
rather improve it, shouldn't we?
> The documentation for IncludeNoEXEC (with the Options directive) states:
> IncludesNOEXEC
> Server-side includes are permitted, but the #exec command and
> #exec CGI are disabled. It is still possible to #include virtual
> CGI scripts from ScriptAliase'd directories.
Yes. The docs describe the *real* behaviour of the code, not the *desired*
behaviour (Fixed a while ago).
> Can this be backported to 2.0 and 1.3?
No way. It would not be backwards compatible, besides the (so called)
"freezed" status.
> 2) Should <!--#exec cgi="..."--> be officially deprecated?
+1 from here. Other opinions?
> Is there any reason "#exec cgi" should remain in Apache 2.1? If people
> support removing it, I'll whip up a quick patch to mod_cgi/mod_cgid.
> Backwards compatibility is one thing, but this is cruft. Current
> documentation says:
> "The include virtual element should be used in preference to exec cgi"
> but does not go so far as to deprecate it, indicating that it might be
> removed in the future.
I'd deprecate it in 2.1 and remove it in 2.3. This seems more gentle to me.
> 3) Apache2 mod_include performs lazy evaluation of a few environment
> variables: DATE_GMT, DATE_LOCAL, LAST_MODIFIED, and USER_NAME
> These variables end up being empty strings ("") in a CGI environment
> unless they are used in the include document prior to the virtual or
> exec include, e.g. the noop
> <!--#if expr="$DATE_LOCAL"--><!--#endif-->
> Can this be documented somewhere? What pages should be updated?
> mod_include documentation, the SSI tutorial, others?
Hrm. In fact this is IMHO a general design flaw of mod_include. We should not
mix include variables with the normal environment at all. If we once decide
to fix this, these variables would completely disappear for external
programs. Opinions?
> 4) Minor nit. Should USER_NAME be inherited from the base document, just
> as the LAST_MODIFIED time is done? If USER_NAME was generated from the
> lazy value before a sub-include, then it is inherited. If it was not
> generated before a sub-include, then it will be set with the value of
> the document when it is actually used, leading to inconsistencies.
ehm... yes?
> 5) Can mod_include please export get_include_var() as an optional function?
> How about as ap_ssi_get_include_var()? This is needed by modules to
> access the mod_include lazily-evaluated variables.
Why isn't ap_ssi_parse_string sufficient?
nd