Link to home
Start Free TrialLog in
Avatar of Mark Franz
Mark FranzFlag for United States of America

asked on

Calling .pl from <!--include exec...-->

I am running NT4.0, IIS 3.0, and need to call a .pl from an include line, I went through the registry and found nothing wrong, but the browser is still ignoring the SSI.  HELP!
Avatar of mortenmo
mortenmo

<!--#include exec="program" --> is something the server has to
accept and not the browser. the <!--#include ..> never reaches
the browser (or shouldn't at least).

I don't know about the web-server you got, but make sure it at
all have SSI (server side include) support (many servers doesn't
or they have another way of including).
Mark tho that it is normally <!--#include not <!--include.. in
the question you forgot the # (hash).
Next is, that if you want to execute a command, you don't use
#include, but you use #exec try <!--#exec cmd="a.pl" ..

Hope this helps

 

Avatar of Mark Franz

ASKER

As I stated in my original Q, I am running IIS 3.0 on a NT4.0 server, I am able to run .pl scripts from a <frameset> page, but not from a SSI, this issue is the same on a PWS also, Here is what I am trying to do;

----------------------------------

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;>
<TITLE>Doc2</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#ffffff">
<!--#include cmd="\cgi-bin\countdown.pl" -->
<P></P></BODY>
</HTML>

I have tried <!-- #exec cgi="....pl --> and <!--#exec cmd... -->
also, I dont have access to other server types.

IIS should not be this difficult to set-up for SSI!
The httpd server daemon probably needs a mime type designated
as acceptable as an executable.  I am unfamiliar with what runs
on windoze. But in the unix world, this would go into
the httpd.conf file.
NT and IIS dosn't use a HTTPD.CONF file, or any real config file, only registry entries.  After much research and many e-mails from various sources, it has been determined that IIS and NT does not recognize <!--#exec ...--> includes fromm HTML files, ... but, with ASP pages, there are certain includes that will run, with much registry work.  I ended up writing a perl file that opened up the tables inside of the script, like a "auto-generate".
I had trouble getting nt to run perl scripts.  And yes, NT can be that hard to get perl to run.  Check your registry.  Make sure ...
HKEY_LOCAL_MACHINE on Local Machine
    SYSTEM
         CurrentControlSet
              Services
                   W3SVC
                        Parameters
                             ScriptMap
has a field like
.pl:REG_SZ:c:\ntperl\bin\perl.exe %s

You could also try making a runit.bat file that is
    perl c:\counter\count.pl

Good luck
Perl scripts run fine, but it would be nice if we could run <include...> lines from inside of a print << statement.  What I have found out so far is that IIS has no <include exec...> capabilities unless you are running ASP.  Which would mean re-writing about 100 pages... :-(
print <<HERE;
<include>@{[`\cgi-bin\countdown.pl`]}</include>
HERE

The default file mapping for SSIs on IIS3.0 is .stm,  Change the name of your html file from whatever.html to whatever.stm, and it will probably work.
nope, OZO hit the nail on the head...
ASKER CERTIFIED SOLUTION
Avatar of ozo
ozo
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
If it didn't hit the nail on the head, you could have rejected it for another answer.
nope, this is ~almost exactly what I was looking for, either way, this actually works better than my original, cause I can put all my script into the same page.
Then why the low grade?  One might think you were dissatisfied in some way.
Actually, there is a problem with the answer as given,
It should have been `/cgi-bin/countdown.pl`, or else `\\\\cgi-bin\\\\countdown.pl`
And with the ${\(...)} construct, you would have wanted ${\(scalar `command`)}
if command returns more than one line