【问题标题】:PHP $_SESSION stops executionPHP $_SESSION 停止执行
【发布时间】:2014-02-08 17:37:24
【问题描述】:

我试图让我的 OS X localhost PHP 脚本发送邮件,所以我关注了this tutorial。完成文章后,我可以让mail( ) 发送,但现在会话有问题。

我有一个曾经使用以下内容的页面:

<!-- ... -->
<?php include( 'search-form.php' ); ?>
<?php include( 'site-navigation.php' ); ?>
    </body>
</html>

现在,页面呈现在 site-navigation.php 包含处停止。我能够准确地找到停止执行的行,它是下面的 if 语句:

网站导航.php:

        <section>
            <h2>Site Navigation</h2>

            <nav>
                <ul>
                    <li>
                        <a href="index.php">Home</a>
                    </li>
<?php
if( isset( $_SESSION['uid'] ) ) :
?>
                    <li>
                        <a href="view-user.php?uid=<?= $_SESSION['uid']; ?>">User Profile</a>
                    </li>
                    <li>
                        <a href="logout.php">Logout</a>
                    </li>
<?
endif;
?>
                </ul>
            </nav>
        </section>

注释掉它可以让执行继续进行,但是我可以做些什么来让它像以前一样停止工作?我真的不想完全重新安装,但如果必须,就这样吧。

我唯一的猜测是,当我将 php.ini.default 复制到 php.ini 时,它覆盖了一些我不知道的设置。这些设置可能是什么?

【问题讨论】:

  • isset( $_SESSION ) === true?
  • var_dump(isset($_SESSION)) 输出bool(true)。在这种情况下,$_SESSION 是一个空数组,这是预期的。
  • @Wrikken,确实如此。不包括在内是我的错误。
  • 好的,如果没问题的话。继续:它是否因致命错误而停止,或者只是“挂起”(您确实启用了完整的错误报告并且您在开发中显示了这些错误)?后一种情况的原因。我可以想象一些进程挂起占用会话 ID(在这种情况下,您可能想在新添加的 mail() 调用之前调用 session_write_close(),或者您拥有的任何可能长时间运行的代码。

标签: php macos apache session


【解决方案1】:

我发现了问题所在。短标签似乎不起作用。

变化:

<?
endif;
?>

收件人:

<?php
endif;
?>

允许继续执行。现在,我只需要弄清楚如何让短标签再次工作。或者,更好的是,修复我的代码,使其没有这些未被注意到的异常。

感谢@Wrikken 帮助我解决这个问题。

【讨论】:

  • 建议您关闭短标签。它们与 XML 语法冲突,并在更高版本的 PHP 中被删除。
  • 是的,我是这么认为的。我想知道我的配置是如何启用短标签的,但我认为这是一件好事,以改善我没有注意到我正在使用它们的两个事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2015-06-01
相关资源
最近更新 更多