php file()返回boolean true而不是文件内容数组

时间:2013-05-01 16:07:06

标签: php file

这里有点奇怪。

这在本地工作,但是当在登台服务器上运行时导致代码失败,因为file()函数返回布尔值而不是记录数组

代码摘录:

if ( $input_list = file("{$path}/input_list.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) !== false) {
     foreach ($input_list as $row) {
          ... etc...
            }
}

文件存在(我通过DirectoryIterator访问目录/文件),它有内容。执行脚本的用户已阅读&写入文件夹和文件的权限。

如果我echo gettype($input_list)它返回:bool(true)

编辑 - 我也尝试过不同的标志 - FILE_IGNORE_NEW_LINES和FILE_SKIP_EMPTY_LINES

为什么它在本地工作的任何想法(用记录填充数组)但在服务器上返回true。

服务器是php 5.3.21 TIA PG

2 个答案:

答案 0 :(得分:3)

您必须使用括号:

if(($input_list = file(…)) !== false) {

否则,您的情况将被解释为:

if($input_list = (file(…) !== FALSE)) {

答案 1 :(得分:-1)

这样做的原因是因为!== false。

您首先将file(..)的结果分配给$input_file,然后检查它是否不等于false。如果文件存在,这将返回true。

因此,请删除!== false,以便:

if($input_file = file("{$path}/test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)) {
    print_r($input_file);
} else {
    echo 'nope';
}