【问题标题】:fopen file in appdata folder (wamp)appdata 文件夹中的 fopen 文件(wamp)
【发布时间】:2015-12-21 14:42:26
【问题描述】:

我在这个路径中有一些 csv 文件:

C:\Users\myusername\AppData\Roaming\some_file.csv

我想通过 fopen() 从我的 www 目录 (wamp) 打开此文件。 这是我的尝试:

$my_file = fopen('C:\Users\myusername\AppData\Roaming\some_file.csv', 'r');

这是我得到的:

"failed to open stream: No such file or directory"

谢谢。

【问题讨论】:

  • 您的 wamp 服务器可能是在不同的帐户下运行,因此它无法访问用户 myusername 的文件
  • 我的 wamp 在同一个用户中运行(我的电脑中只有 1 个用户)

标签: php apache wamp wampserver php-5.6


【解决方案1】:

我刚刚测试了你展示的这段代码,它工作得很好。

我将来会使用 unix 正斜杠而不是 dos 反斜杠,但无需任何更改,您的代码就可以在我的 WAMPServer 2.5 上使用 Apache2.4.9 和 PHP5.6.12

那么问题来了,你在代码中使用了正确的文件名吗?

仅供参考

您的系统上不仅有一个帐户! WAMPServer 以Local System Account 运行,除非你已经做了一些改变。你?因为如果你有,那至少可能是你问题的一部分!

【讨论】:

    【解决方案2】:

    \ 字符在许多语言(包括 PHP)中具有特殊含义,因此带有文件路径的字符串可能不包含您认为的值。应该是这样的:

    $my_file = fopen('C:\\Users\\myusername\\AppData\\Roaming\\some_file.csv', 'r');

    这告诉解释器您想要字符串中的实际\ 字符,并且您没有尝试使用转义序列。您可以更多地了解它们在 PHP here 中的工作方式。您也可以改用单个正斜杠,这在 Windows 上应该可以正常工作。

    【讨论】:

    • 嗯,您可以尝试做一个简单的echo file_exists("C:\\Users\\myusername\\AppData\\Roaming\\some_file.csv"); 以确保路径正确。如果路径是正确的,它应该打印一个 1。
    • 有趣的事情 - 我将文件移动到 AppData 文件夹,现在文件 os 可以很好地打开,当我在 Roaming 文件夹中时如何访问文件?