【问题标题】:fopen problem with php simple testphp简单测试的fopen问题
【发布时间】:2011-07-22 00:54:28
【问题描述】:

我真的被这个难住了。我正在学习使用 simpletest 来运行我的单元测试。在我的一个示例测试类中,我正在测试一个解析器,它获取一个文件并处理内容。

我决定制作一个包含示例内容的文件来测试解析器。该文件应位于子目录中。运行fopen() fwrite() 后,我不断收到文件不存在的错误。我尝试了file_exists(),它也返回错误。然后我删除了路径,只留下了文件名,这次它有效,但我找不到文件。我将代码移出测试类并运行它,它运行良好,文件位于当前工作目录中。

在我看来,在测试方法中运行代码会在当前目录之外的其他位置创建文件。这就是问题所在,我找不到文件。我进行了深入搜索,手动浏览了我的 wamp 文件夹,但仍然找不到。

如果有人可以在这里帮助我,我将不胜感激。 我在 wampserver 2.0i 上运行 php 5.3.5。 Simpletest 是 1.1 Alpha 3 版。谢谢。

【问题讨论】:

  • 只指定fopen的绝对路径?
  • 这行得通。谢谢。仍然想知道文件在哪里。 @约翰
  • 可能是权限问题...
  • 使用 getcwd 并打印该结果应该会告诉您脚本将这些文件放在哪里。

标签: php file simpletest


【解决方案1】:

您可以调用 getcwd http://php.net/manual/en/function.getcwd.php 获取当前工作目录。

【讨论】:

  • 好的,这确实有效。方法中的 cwd 是 B:\wamp\bin\apache\Apache2.2.11 。我想知道为什么。谢谢。我没想到只是检查 cwd,因为我没想到它会改变。但是为什么在apache里面呢? :?
  • 脚本由 apache 服务/守护进程执行,因此工作目录通常是可执行文件的位置。
  • 它只是最简单的脚本吗?为什么我的其他脚本也不会发生这种情况?有这方面的资源吗?谢谢。
  • 如果你真的想控制 cwd 你可以使用php.net/manual/en/function.chdir.php。但我不知道使用绝对路径可以让你到达同一个地方,但恕我直言,例如$root = '/my/work/dir/'; $aPath = $root 。 'tmpFolder1';而不是 chdir 你通过 $root 变量来控制它。
  • 谢谢。我已经使用了一种解决方法。我使用了 chdir() 因为测试环境会改变,而改变变量不会使测试自动化。直到现在我从来没有遇到过这个问题。如果我能找到资源,我想我需要阅读有关工作目录以及它们如何变化的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多