我想从一个大约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"));
答案 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
就像是将密钥的副本提供给所有人。