Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fopen()不工作_Php_File_Fopen - Fatal编程技术网

Php fopen()不工作

Php fopen()不工作,php,file,fopen,Php,File,Fopen,我想从一个大约3-4MB的文本文件中读取一个简单的字符串,但是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/

我想从一个大约3-4MB的文本文件中读取一个简单的字符串,但是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"));

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


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

将第二行更改为:

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

并查看它输出的原因。

您必须将这一行添加到代码中

error_reporting(E_ALL);
ini_set('display_errors',1);
在你所有的代码中都要保留这一行

还有这条线

error_reporting(E_ALL);
ini_set('display_errors',1);
并仅在开发服务器上保留此行。
在生产过程中,应将其更改为

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

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

在您的FTP文件中,权限通常需要是
646
(或
-rw-r--rw-
),而不是
777
(始终忽略此类注释)。如果您想将密钥交给您信任的人,将权限设置为
777
就像将密钥副本交给每个人一样。

有这样的文件吗?尝试不使用
die
查看实际错误是否检查权限?另外,命令行上的PHP和Apache上的PHP的工作方式有点不同。kumar得到了它><将此作为一个答案发布,我会将其标记为已接受…为不恰当之处感到抱歉…停止投票这两个无意义的评论。人们必须检查某些错误信息,而不是算命。除了这两个原因之外,还有很多其他原因。@Col:我也不太喜欢死,但简单的说就是找出调用失败的原因,而不是重新构建所有代码:-)没有必要重新构建任何代码。正如错误消息传递给developerIf的方式一样,如果您要执行并删除所有的die语句,那就是重新编译。我们不知道有多少动物可能存在:-)将论点更改为这个特定的死亡是传递所需信息所需的最小影响更改。实际上是你要求他重写所有死亡陈述。虽然我只是要求打开错误报告。讨论到死也没有意义,@Col,我想我们必须同意不同意。我要求只更改一个特定的
die
,该信息是必需的。一旦收集到信息,OP就可以自由地做他们想做的事情(把它改回去,全部改,全部删除,随便什么)。最小影响发现的艺术对调试至关重要,尤其是在现场,正是出于这个原因,我提出了这个答案。我将文件权限更改为777,添加clearstatcache方法后,我的脚本开始工作。缺少右括号,但编辑不允许对单个字符进行更改:(如果(!file_存在(“/my/path/to/file.txt”)){