【问题标题】:PHP's fopen is terminally failingPHP fopen 最终失败
【发布时间】:2012-06-16 03:08:19
【问题描述】:

好的,我必须在这里遗漏一些完全基本的东西。 我对PHP的fopen函数有一个非常简单的使用,但是由于某种原因,无论我做什么它都不会打开文件。

奇怪的是,我在同一个脚本的另一个函数中使用了 fopen,它运行良好。我在这两个函数中都使用了 fclose。所以,我知道这不是流氓文件句柄的问题。

我已经确认了文件的路径和目标文件的存在。

我以 root 身份在命令行运行脚本,所以我知道原因不是 apache。而且由于我以 root 身份运行脚本,因此我相当确信权限不是问题。

那么,我到底错过了什么?

function get_file_list() {
  $file = '/home/site/tmp/return_files_list.txt';
  $fp = fopen($file, 'r') or die("Could not open file: /home/site/tmp/return_files_list.txt for reading.\n");
  $files_list = array();
  while($line = fgets($fp)) {
    $files_list[] = $line;
  }
  fclose($fp);
  return $files_list;
}

function num_records_in_file($filename) {
  $fp = fopen( $filename, 'r' ); # or die("Could not open file: $filename\n");
  $counter = 0;

  if ($fp) {
    while (!feof( $fp )) {
      $line = fgets( $fp );
      $arr = explode( '|', $line );

      if (( ( $arr[0] != 'HDR' && $arr[0] != 'TRL' ) && $arr[0] != '' )) {
        ++$counter;
        continue;
      }
    }
  }

  fclose( $fp );
  return $counter;
}

根据要求,这两个功能都在这里。第二个函数传递一个文件的绝对路径。这就是我用来确认文件在那里并且路径正确的方法。

【问题讨论】:

  • 请提供一些代码和更多上下文?
  • 什么错误,你设置的路径是绝对的吗?
  • 确保文件的所有子目录都设置了+x权限。
  • @nickb - 尼克,所有目录都是 777,但由于我是从命令行以 root 身份运行脚本,所以没关系。
  • @samy.vilar - 这很奇怪。我也没有收到任何错误。

标签: php fopen


【解决方案1】:

哇!嗯,我想通了。 一时兴起,我决定尝试修剪文件名。显然,它在文件名的末尾带有一些空格或其他东西。因此,当它试图打开文件时,由于正在寻找 $filename +

而无法打开

我想每天都能学到一些新东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2011-05-04
    相关资源
    最近更新 更多