无法使用fopen(php)打开文件

时间:2014-11-07 14:27:56

标签: php file-io fopen

我正在尝试打开一个文件,以便在PHP脚本中阅读,但遇到了麻烦。

这是我的代码

$fileHandle = fopen("1234_main.csv", "r")or die("Unable to open");
if (!file_exists($fileHandle))
{
    echo "Cannot find file.";
}

该脚本与我尝试读取的文件位于同一目录中,并且没有其他读/写权限错误,因为我可以在同一目录中创建/读取其他文件。

当我运行脚本时,我只得到"找不到文件"错误信息。为什么会显示此错误消息?当然,如果fopen()无法打开文件"或死亡声明"应该结束脚本吗?

另外,为什么我无法打开文件,当它确实存在并且与脚本位于同一位置时(我也尝试使用文件名的完整路径而不仅仅是文件名)。

我对php很新(但是在c ++中有exp)所以如果它是一个愚蠢的问题我道歉。

非常感谢

4 个答案:

答案 0 :(得分:3)

在PHP中,file_exists()需要文件名而不是句柄。试试这个:

$fileName = "1234_main.csv";
if (!file_exists($fileName))
{
    echo "Cannot find file.";
} else {
    $fileHandle = fopen($fileName, "r")or die("Unable to open");
}

另请注意,在Web服务器上执行脚本时,必须相对于最初请求的php脚本指定文件名。

答案 1 :(得分:1)

您可以使用file_get_content()进行此操作。失败时,file_get_contents()将返回FALSE。例如

$file = file_get_contents('1234_main.csv');

if( $file === false ){
    echo "Cannot find file.";   
}

答案 2 :(得分:0)

file_exists采用字符串,而不是文件句柄。见http://php.net/manual/en/function.file-exists.php

答案 3 :(得分:0)

file_exists()将文件名作为输入,但代码的逻辑有问题。你首先尝试打开一个文件然后检查它的存在吗?

首先应通过file_exists("1234_main.csv")检查其存在情况,如果存在则尝试打开它。