0

这里有点奇怪。

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

代码摘录:

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

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

如果我返回echogettype($input_list)bool(true)

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

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

服务器是 php 5.3.21 TIA PG

4

2 回答 2

3

您必须使用括号:

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

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

if($input_list = (file(…) !== FALSE)) {
于 2013-05-01T16:09:01.430 回答
-1

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

您首先将结果分配给file(..)to $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';
}
于 2013-05-01T16:17:33.370 回答