这里有点奇怪。
这在本地工作,但是当在登台服务器上运行时导致代码失败,因为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
答案 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';
}