gpt4 book ai didi

PHP 的 fgetcsv 在文件开头返回 false

转载 作者:行者123 更新时间:2023-12-05 06:44:48 24 4
gpt4 key购买 nike

这是一个在Windows下运行的PHP脚本。它一直在工作,但最近停止了。

文件被打开并返回一个有效的文件句柄:$fh = fopen($filename, 'r');

但是,我第一次调用 fgetcsv 时它返回 false:

$headers = fgetcsv($fh, 6000, ',');
$line_no++;
if($headers === FALSE){
echo 'Error parsing file headers';
}

这现在发生在我尝试的所有 csv 文件上。我尝试过但无济于事的其他更改是:

  • ini_set('auto_detect_line_endings', true); 就在打开文件之前
  • rewind($fh); 打开文件后立即
  • 对第二个参数长度使用 0 或类似 6000 的数字。
  • 将文件的行尾样式从 unix 更改为 Windows 和 Mac

似乎 Windows 的某些问题导致此文件无法解析。

有什么方法可以从 fgetcsv 返回实际错误吗?文档没有说有,只是它在任何错误时返回 false 。是否有其他可能导致问题的 Windows 设置? Windows 安全设置让每个人都能完全控制文件。

最佳答案

问题原来是脚本开头的更改是使用同一个文件作为锁定文件,因此脚本不会同时在同一个文件上运行两次。然后,稍后在脚本中,当我真正想要解析文件时,我再次打开它(成功),但实际上我无法读取内容。

我使用的解决方案是根据文件名创建一个临时锁定文件,而不是使用实际文件。例如:$filename.'.lock'

这对我来说是一个愚蠢的错误,但是如果 PHP 在某个时候返回或写入错误/警告,它会更有帮助。

关于PHP 的 fgetcsv 在文件开头返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com