fopen()不工作

问题描述 投票:1回答:5

我想从一个大约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"));
php file fopen
5个回答
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"));

4
投票

你必须在这行添加你的代码

error_reporting(E_ALL);

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

还有这条线

ini_set('display_errors',1);

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

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

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


0
投票

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

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


0
投票

将第二行更改为:

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

并看看它输出的原因。


0
投票

在你的FTP文件中,权限往往需要是646(或-rw-r--rw-),而不是777(总是忽略那些评论)。你想给你信任的人一把钥匙,设置777的权限就像是给每个人一份钥匙。

© www.soinside.com 2019 - 2024. All rights reserved.