views:

968

answers:

3

I have a shtml file index.shtml in which I want to include a PHP file which performs some programing and returns HTML data. I am trying to include my PHP file but I don't know how to do that, I tried following but nothing is working,

Following line is just printing an error, "[an error occurred while processing this directive] ":

<!--#include file="/SSI/test.php"-->

This line is displaying some junk characters:

<!--#include virtual="/SSI/test.php"-->

This line is doing nothing and displaying the command as is in the .shtml page

<?PHP 
    include("/SSI/test.php");
?>

Thanks

A: 

For the last to work simply rename your .shtml to .php but note that that will stop any shtml in there from working. But that shouldn;t be a problem if you also rewrite that to php.

Edit from your comment:
If you run apache you could add the following in your .htacces and then you could rename the file to .php

 redirect permanent filename.shtml filename.php

That will redirect people visiting example.com/filename.shtml to example.com/filename.php

Pim Jager
I don't want to rename my .shtml to .php caz, I am already getting lot of traffic from that link and I don't wann take any risk on file name.
Prashant
A redirect won't change that, it's intended exactly for that purpose
Evert
A: 

I don't think you can in Apache (I've no idea about other web servers). The Apache documentation says that 'include_virtual' lets you include the results of a CGI program; but PHP isn't a CGI application in Apache's terms: it's handled by a different module, in a different way.

Colin

Colin Fine
PHP can configured as CGI program
Bernd Ott
+2  A: 

If there is no particular reason that you are using .shtml aside from what you mentioned regarding traffic, you can change its processing in your .htaccess file:

<Files *.shtml>
ForceType application/x-httpd-php
</Files>

Or you can specify that file in particular:

<Files filename.shtml>
ForceType application/x-httpd-php
</Files>

This will tell the server to parse the .shtml like it was a .php file, and therefore any PHP commands should be processed, such as your include statement. No need to change the file extension.

StudioKraft