【问题标题】:Why does getcwd() returns / in __destruct()?为什么 getcwd() 在 __destruct() 中返回 /?
【发布时间】:2013-02-04 00:23:18
【问题描述】:

我刚刚注意到,如果在 __destruct() 魔术函数中调用 getcwd() 会返回“/”,而在任何其他方法中它会返回预期的路径。

你对此有解释吗?

【问题讨论】:

  • 我用 PHP 5.3.10 运行它。

标签: php getcwd


【解决方案1】:

这是一种 SAPI 行为

“脚本关闭期间调用的析构函数已经发送了 HTTP 标头。脚本关闭阶段的工作目录可能与某些 SAPI(例如 Apache)不同。”

来自http://php.net/manual/en/language.oop5.decon.php

但正如其他答案中提到的,有很多方法可以获取当前的相对路径。如果您在运行时更改了它,请务必记下对象内部的某处。

【讨论】:

  • 我认为这确实是一个错误,而 alex 提出了一个旧问题,而 icktoofay 无法在他的新 PHP 版本上重现该问题。
  • 这是 2005 年的一个错误。现在它是一个 sapi 问题。 bugs.php.net/bug.php?id=31570
【解决方案2】:

有一个old bug

你能用__FILE__代替getcwd()吗?

【讨论】:

  • 是的,看起来是这样。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-07
  • 2016-06-11
  • 2018-02-02
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 2013-04-18
相关资源
最近更新 更多