Apache: Inline PHP not working on Linux

2019-07-04 08:05发布

问题:

I am having trouble getting my PHP to work for my Apache server. I am running Oracle Linux, and used yum install php + yum install httpd to get my PHP and Apache. I have scoured the internet and done a couple of things:

Firstly, I have gone into my httpd.conf file and added LoadModule php5_module modules/libphp5.so. I have chosen to use the one in my php.conf file, which is the exact same one. Furthermore, I have done AddType application/x-http-php .php, so now my .php files are loading fine.

Secondly, I have tried to run my Apache server, and it works fine. It displays my index.html file, which I set with DirectoryIndex. However, when I tried to put php code into it, it got automatically commented out, which I assume is because I haven't set it to properly execute on the server side.

Now, with all that said, I am wondering what else I may be missing. I have two set-ups, one where I have a .php file, and one where the php is inline with the html.

index.html

<!DOCTYPE html>
    <body>
        <?php echo "Hello everybody."; ?>
    </body>
</html>

index.php

<?php phpinfo(); ?>

The index.php file loads fine, but the index.html doesn't run the php code. How do I get the inlined version of php to work?

Note: I have set-up my Mac OS to work fine with .php files, but it is also having trouble with inline php within an Html file. What am I missing?


SOLUTION: Html files themselves cannot include php. Instead, the file must be a .php extension, and within a .php file, you can have text, html, and JavaScript.

回答1:

I do not think .html files are run through php at all so the <? ... ?> is treated as a normal tag which is invisible.

Change the extension to .php.

Php can contain html.

Edit: There exists an option to configure for example Apache to parse html files as if they are php if you for some reason cannot or do not want to use php endings.

This, in my opinion, is not a good solution as it hides the fact that the page is dynamic to a future maintainer.



回答2:

There is a similar question which has a similar problem:

PHP code is not being executed, instead code shows on the page

You might want to check out points 2 to 5 in the accepted answer:

  • LoadModule (It seems, that you have configured that properly)
  • Set Apache to run PHP files (this is the third point, and it seems that you didn't configure that). Add the following line to your httpd.conf file: AddType application/x-httpd-php .php
  • Make sure, that you have the file ending with the .php extension (after you have configured Apache to run PHP files, see the previous point)
  • Change your code to use the long PHP opening tag (<?php instead of just <?)


回答3:

You need to set short_open_tag = On in your php.ini file