PHP 文件在 Apache2 LAMP 机器中显示为纯文本

Posted

技术标签:

【中文标题】PHP 文件在 Apache2 LAMP 机器中显示为纯文本【英文标题】:PHP Files shown as Plaintext in Apache2 LAMP Machine 【发布时间】:2016-04-14 19:25:43 【问题描述】:

我的 Ubuntu LAMP 机器中有一个 php+html 文件。我最近从/var/www/html/ 清理了项目文件,尽管我已经完成了那个项目。虽然今天我想检查一些东西,所以我将项目文件夹从 Dropbox 帐户返回到 html 目录。

问题是当我输入localhost 的url 时,我得到的HTML 结构是纯文本的。为什么我突然想到了这个问题?我已经对我的html 文件夹的访问权限进行了分级,并且在我从该目录中删除了项目文件夹后,我没有触及任何东西。

需要指出的是,托管在网络服务器中的项目的在线版本运行良好。

我的index.php 文件:

<?php
session_start();
header('Content-type: text/plain; charset=utf-8');
    if(isset($_SESSION['login'])) 
      header('Location: home.php');
    
    require_once 'lib/config.php';

    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    mysql_select_db(DB_DATABSE, $conn);

    if(isset($_POST['register-button'])) 
        $UserEmail =  mysql_real_escape_string($_POST['Remail']);
        $Pass1 =  mysql_real_escape_string($_POST['RPass1']);
        $Pass2 =  mysql_real_escape_string($_POST['RPass2']);

        if ($Pass1 == $Pass1) 
            $qr = mysql_query("SELECT * FROM Users WHERE UserEmail = '".$UserEmail."'");
            $row = mysql_num_rows($qr);
            if($row > 0)
                echo "<script type='text/javascript'>alert('Email already registered');</script>";
            
            else 

                /*$cost = 10;
                $salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
                $salt = sprintf("$2a$%02d$", $cost) . $salt;
                $PassHash = crypt($Pass1, $salt);*/

                mysql_query("INSERT INTO Users(UserEmail, UserPass) values('".$UserEmail."','".$Pass1."')") or die(mysql_error());

                /*$UserId =  mysql_insert_id();
                $sql = "UPDATE MyGuests SET UserId='".$UserId."' WHERE id=".$UserId."";
                mysql_query($conn, $sql);
                */
            
        
    
    if(isset($_POST['login-button'])) 
        $UserEmail =  mysql_real_escape_string($_POST['Lemail']);
        $Pass =  mysql_real_escape_string($_POST['LPass']);
        $result = mysql_query("SELECT UserPass FROM Users WHERE UserEmail = '".$UserEmail."'");
        if (!$result) 
            echo 'Could not run query: ' . mysql_error();
            exit;
        
        $row = mysql_fetch_row($result);
        if ($Pass == $row[0]) 
            $_SESSION['login'] = $UserEmail;
            header("location:home.php");
        
     

?>
<!DOCTYPE html>
<html>
<head>
    <title>Secreat Sea</title>

    <link rel="stylesheet" type="text/css" href="index.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
</head>
<body>

<div class="wrapper">
    <div class="welcome-container">
    <div class="Logo">
            <img src="img/Lovelogo.svg" >
        </div>
        <div class="header">
            <h2>&nbsp;Welcome to SecretSea</h2>
        </div>

        <div class="informations">
            <p style="padding-left: 0px; padding-right: 0xp; padding-bottom: 10px; font-family: Lato;" id="p1">
                An Strictly Two-Side Communication App
            </p>
            <p style="padding-bottom: 30px; font-family: Lato;" id="p2">For people who love each other's &#9829</p>

            <form id="login" method="POST">

                <input name="Lemail" placeholder="Your Username" required="required" type="text">
                <input name="LPass" placeholder="Password" required="required" type="password">
                <button type="submit" id="login-button" name="login-button">Dive</button>

            </form>

            <form id="register" method="POST">
                <input id="Remail" name="Remail" placeholder="Your email" required="required" type="email" autocomplete="off">
                <input id="RPass1" name="RPass1" placeholder="Your Password" required="required" type="password" autocomplete="off">
                <input id="RPass2" name="RPass2" placeholder="Your Password" required="required" type="password" autocomplete="off">

                <button type="submit" id="register-button" name="register-button">Register</button>
            </form>

            <div style="padding-top: 10px;"></div>

            <div class="GetStarted" id="GetStarted">
                <a href="#">Get Started Today</a>
            </div>
            <div class="LearnMore" id="LearnMore">
                <a href="#">Learn More</a>
            </div>



            </div>

            <div class="footer">
                <div class="copyright">Copyright GeorgeGkas 2015-2016</div>
            </div>
    </div>
</div>

</body>
</html>

我在浏览器中看到的图片:

【问题讨论】:

【参考方案1】:

安息吧。

我只是展示它。我将标题设置为text/plain

如果你删除标题一切正常:

header('Content-type: text/plain; charset=utf-8');

..或者如果我们将其更改为text/html

【讨论】:

你为什么要添加header()?我不是想变得聪明,我想知道你为什么认为这是必要的? @RiggsFolly ***.com/questions/1414325/… 我认为您实际上不需要它来进行正常处理,PHP 会处理所有这些。而是在&lt;head&gt; 中使用元标记来告诉浏览器您正在使用utf-8 w3schools.com/tags/tag_meta.asp

以上是关于PHP 文件在 Apache2 LAMP 机器中显示为纯文本的主要内容,如果未能解决你的问题,请参考以下文章

LAMP+LNMPLAMP环境搭建测试

LAMP环境搭配之apache与php结合

LAMP架构编译安装

LAMP--php 安装扩展模块

Apache2 无法打开 .php 文件

Mac下搭建lamp