【问题标题】:php session doesn't work in cliphp会话在cli中不起作用
【发布时间】:2017-02-01 19:18:51
【问题描述】:

嗨,我是 php 新手,我想在 php cli 中使用 session,但我没有运气。 但是当我用浏览器运行它时,相同的代码可以工作。 我做错什么了吗? 我进行了搜索,发现无法在 php cli 中使用 session,但我不明白为什么以及什么是替代方法?

【问题讨论】:

标签: php session command-line-interface


【解决方案1】:

在 stackoverflow 中提问之前,您必须搜索并阅读在线文章。 堆栈上甚至还有相同的问题。

是的,没错,PHP 会话主要是为与 cgi SAPI 一起使用而创建的,据我所知,使用 CLI SAPI 的 php 会话没有用处。 原因很简单, http 是无状态的,我们使用 cookie 和 session 来记住服务器上的用户并跟踪他/她的行为。 但是在控制台中,为什么你需要会话???

考虑在控制台运行php时没有浏览器没有http请求,所以没有http头,所以没有http COOKIE头。

如果您需要存储可供不同的 php 进程使用(CLI SAPI) 您可以为此目的使用数据库。 但是如果你出于任何原因坚持使用 php session, 看看这里:

Is it possible to read cookie/session value while executing PHP5 script through command prompt?

【讨论】:

  • 谢谢,看来我不知道会话的真正含义以及为什么要使用它们。我必须阅读有关会话的更多信息。对不起,如果我问我从未开发过网络程序的愚蠢问题
【解决方案2】:

您不能在 cli 模式下设置会话。会话是网络的一部分——您通过互联网资源访问。当您使用 CLI 时,您不是在调用互联网。

【讨论】:

    【解决方案3】:

    您现在可能已经发现,在 CLI PHP 脚本中使用会话的原因有很多——对您的 Web 应用程序进行单元测试只是其中之一。提出这个问题的另一种方式:PHP 是否有像 python 的 requests 模块这样的库,它具有优雅和直观的 Session 构造?见python requests' Session object。我已经有一段时间没有使用 perl 了,但毫无疑问 perl 也会有。

    确实:https://packagist.org/packages/rmccue/requests

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-28
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多