我想从一个大约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"));
您是否先检查过该文件是否存在?
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"));
你必须在这行添加你的代码
error_reporting(E_ALL);
并且始终将此行保留在您的所有代码中
还有这条线
ini_set('display_errors',1);
并将此行仅保留在开发服务器上。 在制作时应该改为
ini_set('display_errors',0);
ini_set('log_errors',1);
通过这样做,您不需要Stackoverflow帮助读取现在明显的错误消息。
尝试在die中输出系统错误或尝试使用try ... catch。在开发时也打开php错误。在打开文件之前,还要检查文件是否可读。
最常见的问题是:文件不存在(或者只是提供了错误的路径?),没有足够的权限来读取此文件。
将第二行更改为:
$fh = fopen("/my/path/to/file.txt", "r") or die($php_errormsg);
并看看它输出的原因。
在你的FTP文件中,权限往往需要是646
(或-rw-r--rw-
),而不是777
(总是忽略那些评论)。你想给你信任的人一把钥匙,设置777
的权限就像是给每个人一份钥匙。