【问题标题】:PHP fopen doesn't find existing filePHP fopen 找不到现有文件
【发布时间】:2019-01-14 08:21:41
【问题描述】:

我目前正在用 PHP 编写登录系统,因为我需要读取其中包含一些用户信息的文件。 但是更改文件夹系统后,PHP fopen 不再读取文件了。

users.php 和 userinf.csv 文件都在 samle 文件夹中。

我已经尝试更改文件路径,硬编码文件路径,重新创建文件。所有这些文件。

//Read file
$fp = fopen("userinf.csv", "r");
if(!$fp)
{
    echo "File couldn't be read";
    return false;
}

在更改文件系统之前,它可以工作。但现在我得到了错误: 警告:fopen(userinf.csv):打开流失败:第 45 行的 FILEPATH 中没有这样的文件或目录

【问题讨论】:

  • 当你执行getcwd()函数时,你得到正确的目录了吗?
  • 就是这样!它保留在我的 index.php 而不是 users.php 的文件夹位置谢谢!
  • @Tim 您的文件位于何处无关紧要。重要的是您调用文件的位置。干得好#Koen

标签: php fopen


【解决方案1】:

当您在没有任何引用的情况下使用 fread 函数时,它可能会失败。我总是说你需要先用getcwd()检查你的路径

<?php
echo getcwd(); //Current Working Directory
?>

【讨论】:

  • 这不是真正的答案,它应该类似于fopen(dirname(__FILE__). ' /userinf.csv', 'r')
【解决方案2】:

始终使用绝对路径。它消除了任何歧义。使用相对路径可能会根据您的脚本所在的位置而改变,除其他外,具体取决于您的系统。

$fp = fopen("/home/somewhere/blah/userinf.csv", "r");

您也可以随时为路径使用变量:

// Somewhere in your code
define('ROOT_PATH', "/home/somewhere/blah");

// In the implementation
$fp = fopen(ROOT_PATH . "/userinf.csv", "r");

【讨论】:

  • 有时可能需要使用基于脚本位置的相对路径作为最终位置。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2021-09-26
  • 2014-05-31
相关资源
最近更新 更多