奇怪的错误:相同的PHP代码,但在mac和windows机器上的结果不同

时间:2016-05-19 18:15:31

标签: php windows macos xampp

我遇到了一个非常奇怪的错误。给出相同的代码:

<?php session_start(); ?>
<?php if (!isset($_SESSION['email'])): ?>
<p><a href="admin_reg.php">Regsiter as admin</p>
<p><a href="student_reg.php">Register as student</p>
<p><a href="login.php">Log in</a></p>
<? else: ?>
<p><a href="logout.php">Log out</a></p>
<p><a href="group_create.php">Create group</a></p>
<p><a href="group_join.php">Join group</a></p>
<?php endif; ?>

我的小伙伴和我在不同的机器上运行相同的项目(他们使用Windows,我使用mac)。我们都在xampp中运行它并获得正常结果:在身份验证之前,只显示前三个链接。但是在他们的机器中,所有六个链接都显示在页面上,这是不可能的。我们的PHP版本也是相同的:5.6.1*。你有什么想法吗?提前谢谢!

3 个答案:

答案 0 :(得分:7)

您的其他人正在使用短标签,可能未在所有服务器上启用。将其更改为使用完整的php标记:

<?php else: ?>

答案 1 :(得分:0)

正如 aynber 所指出的那样,很可能是因为你的短标记必须在php.ini中启用。

但为什么不写这样的代码呢?完全兼容,无论php配置如何。

<?php

  session_start();

  if (!isset($_SESSION['email'])){
    echo '<p><a href="admin_reg.php">Regsiter as admin</p>',
         '<p><a href="student_reg.php">Register as student</p>',
         '<p><a href="admin_reg.php">Regsiter as admin</p>';
  } else {
    echo '<p><a href="logout.php">Log out</a></p>',
         '<p><a href="group_create.php">Create group</a></p>',
         '<p><a href="group_join.php">Join group</a></p>';
  }

?>

值得一提的是,相同的 php代码在不同的操作系统上可能会有不同的结果(除了服务器设置)。在Linux中,DB区分大小写,而在Windows中则不区分大小写。还应考虑路径位置。然后是32b对64b整数大小,只是说它不是一个不常见的问题。

答案 2 :(得分:0)

尝试以下代码:

<?php session_start(); ?>
<?php if (!isset($_SESSION['email'])){ ?>
<p><a href="admin_reg.php">Regsiter as admin</p>
<p><a href="student_reg.php">Register as student</p>
<p><a href="login.php">Log in</a></p>
<?php } else { ?>
<p><a href="logout.php">Log out</a></p>
<p><a href="group_create.php">Create group</a></p>
<p><a href="group_join.php">Join group</a></p>
<?php } ?>