How to include PHP file in SHTML pages?

2019-02-25 01:11发布

问题:

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

回答1:

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.



回答2:

I could be wrong, but given the error you are getting, the problem may not in the include statement but an error in the php file to be included that is causing the problem.



回答3:

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



回答4:

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