我想从一个文本文件中读取一个简单的字符串,它是大约3-4 MB,但fopen()失败(称为“无法打开文件”)。以下是代码:fopen()不工作
clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));
我想从一个文本文件中读取一个简单的字符串,它是大约3-4 MB,但fopen()失败(称为“无法打开文件”)。以下是代码:fopen()不工作
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"));
尝试输出系统错误或尝试使用try ... catch。同时在开发时打开php错误。在打开文件之前检查文件是否可读。
最常见的问题是:文件不存在(或只是提供了错误的路径?),没有足够的权限来读取此文件。
变化是第二行:
$fh = fopen("/my/path/to/file.txt", "r") or die($php_errormsg);
,看看它输出的原因。
请不要死! –
@Col:我不是一个死的粉丝,但简要的是找出为什么电话失败,不重新构建所有的代码:-) – paxdiablo
没有必要重新构建任何代码。只是传递给开发人员的错误消息的方式 –
你要添加到您的代码,此行
error_reporting(E_ALL);
,并始终保留此行所有的代码
而且这条线
ini_set('display_errors',1);
,并保留此行只在开发服务器。
而在生产它应改为
ini_set('display_errors',0);
ini_set('log_errors',1);
这样做,你将不再需要援助#1中读取现在很明显的错误消息。
在您的FTP 文件权限往往需要是646
(或-rw-r--rw-
),不777
(总是忽视这些类型的评论)。你想给一个你信任的人一个钥匙,设置权限为777
就好比给你的钥匙副本大家。
有没有这样的文件?尝试不用“死”来查看实际错误 – k102
您是否检查了权限?另外,通过Apache在命令行和PHP上工作的位有所不同。 – Kumar
kumar got it>。<将此贴为答案,我会将其标记为已接受...对于不便之处... –