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> 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 ♥</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 会处理所有这些。而是在<head>
中使用元标记来告诉浏览器您正在使用utf-8 w3schools.com/tags/tag_meta.asp以上是关于PHP 文件在 Apache2 LAMP 机器中显示为纯文本的主要内容,如果未能解决你的问题,请参考以下文章