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

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

<?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中,我得到了一个正常的结果:在authentication之前,只有前三个链接出现。 但在他们的机器中,所有六个链接都显示在页面上,这是不可能的。 我们的PHP版本也是一样的: 5.6.1* 。 你有什么想法吗? 提前致谢!

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

 <?php else: ?> 

正如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整数大小,只是说这不是一个罕见的问题。