【问题标题】:parameter error with fputcsv() in PHPPHP 中 fputcsv() 的参数错误
【发布时间】:2013-06-09 18:16:12
【问题描述】:

我正在尝试遍历字典 .txt 文件,计算 metaphone() 值并将其附加到每一行。然后将其写入新文件。

我在使用 fputcsv() 的那一行出现错误,它说:expects parameter 1 to be resource, boolean given

我不相信我将它传递给布尔值。我不明白我做错了什么。

<?php
$dict = fopen("originalDictionary.txt", "r");
$keyedDict = fopen("dictionary.txt", "w");
while ($line = fgets($dict)){
    $line = trim(strtolower($line));
    fputcsv($keyedDict, array($line,metaphone($line)));
}
fclose($dict);
fclose($keyedDict);
?>

Here is a link to originalDictionary.txt 如果有帮助的话。

【问题讨论】:

  • 刚刚回复了评论...但这可能意味着 fopen('dictionary.txt', 'w') 因为权限而失败。将错误报告加速到 E_ALL | E_STRICT,它应该说的太多了。
  • @Orangepill 啊,好的。你觉得755适合写dictionary.txt的目录权限吗?
  • @Orangepill 我加快了错误设置,这就是我得到的错误。其实既然每个人都需要能够写文件,那么实际上只有我,权限不是最好是773吗?

标签: php file csv


【解决方案1】:

fopen 成功返回文件指针资源,错误返回 FALSE。

可能文件打开失败并且函数返回false,你有你的布尔值

检查文件权限以及是否触发了任何错误(例如使用ini_set('display_errors',1); error_reporting(E_ALL); 显示它们

【讨论】:

  • 写入文件的权限应该是多少? 755?在它试图写入的目录上?
  • 这取决于上下文。谁在运行程序?该文件是否已经存在?那么文件本身必须具有正确的权限。 755 可能是错误的,除非目录的所有者也是程序运行的用户。
  • @JayGatz 这样的权限通常设置为0644。但是,在更糟糕的情况下,0777 是最后的手段。
  • 不,用户和所有者不同。用户正在运行程序。该文件尚不存在。我认为 773 更好,因为这不是授予每个人写访问权限吗?还是太高了?
  • @Fred 我不喜欢 777。那太高了。我需要用户和所有者能够编写文件,所以 773 不应该足够好吗?
猜你喜欢
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多