【问题标题】:Could not access php session variable once the tomcat restarts一旦tomcat重新启动,就无法访​​问php会​​话变量
【发布时间】:2010-02-02 06:33:47
【问题描述】:

我正在用java开发一个应用程序,它需要在tomcat服务器下集成一些php文件。我做的一切都很成功,但问题是当我关闭 tomcat 服务器时,它会显示一些错误,例如

Exception in thread "JavaBridgeSessionTimer" java.lang.NullPointerException
        at php.java.bridge.SessionFactory$SessionTimer.run(SessionFactory.java:157)
        at java.lang.Thread.run(Thread.java:619)

稍后,如果我重新开始,我将无法从 php 文件访问任何会话变量。我尝试了一个在 tomcat 中运行的简单 php 程序。一旦我重新启动机器,这个问题就会得到解决,但我不想经常为 tomcat 中任何配置文件的任何更改执行此操作。

session1.php

<?php
session_start();
?>
<body><html>
<form action="session2.php" method="post">
         <?php $_SESSION['name']="MyName"; ?>
 <input type="submit" value="Submit">
</form>
</body>

session2.php

<?php
session_start();
?>
<html>
<body>

<?php echo( $_SESSION['name'] ); ?> 

</body>
</html>

【问题讨论】:

    标签: java php php-java-bridge


    【解决方案1】:

    PHP 会话变量保存在内存中。这意味着如果您关闭服务器,它们就会丢失。

    如果您需要它们在服务器重新启动后仍然存在,则需要将它们存储在数据库或类似数据库中。

    【讨论】:

    • 但是我再次从头开始创建会话,为什么它没有作为新的会话变量存储在内存中?
    • 您需要提供更多细节,例如演示问题的示例代码。
    • 我在weapp下创建了一个文件夹sess,把文件放在session1.php下面
      session2.php

      session3.php 第一次启动时工作正常。但是一旦重新启动tomcat就不会了
    • 对不起,代码不正确,上面有三个 php 文件, session1.php , session2.php,session3.php 如果我将其作为新问题发布,代码不会显示。
    • 先生,我已经解决了这个问题。日志文件中有一个权限被拒绝错误,当我从 root 启动 tomcat 时,问题得到解决。重新启动后,tomcat 从 init.d 运行意味着从 root 运行,这就是我可以运行程序的原因。我可以解决权限问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2018-03-26
    相关资源
    最近更新 更多