fopen()不工作

时间:2011-09-06 08:39:25

标签: php file fopen

我想从一个大约3-4 mb的文本文件中读取一个简单的字符串,但fopen()失败(调用die()中的“无法打开文件”)。这是代码:

clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));

5 个答案:

答案 0 :(得分:4)

您必须在此行中添加

error_reporting(E_ALL);

并且始终将此行保留在您的所有代码中

也是这一行

ini_set('display_errors',1);

并将此行仅保留在开发服务器上 在制作时应该改为

ini_set('display_errors',0);
ini_set('log_errors',1);

通过这样做,您不需要Stackoverflow帮助来阅读现在明显的错误消息。

答案 1 :(得分:3)

您是否先检查过该文件是否存在?

if (!file_exists("/my/path/to/file.txt") { 
    die('File does not exist');
}

clearstatcache();

$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));

答案 2 :(得分:0)

尝试在die中输出系统错误或尝试使用try ... catch。在开发时也打开php错误。在打开文件之前,还要检查文件是否可读。

最常见的问题是:文件不存在(或者只是提供了错误的路径?),没有足够的权限来读取此文件。

答案 3 :(得分:0)

将第二行更改为:

$fh = fopen("/my/path/to/file.txt", "r") or die($php_errormsg);

并查看其输出的原因。

答案 4 :(得分:0)

在您的FTP 文件中,权限往往需要646(或-rw-r--rw-), 777(始终忽略)那种评论)。您希望为您信任的人提供密钥,将权限设置为777就像是将密钥的副本提供给所有人