为何fopen在匿名函数(Closure)中无法正常工作?
问题解答
你的第二段代码只是定义了一个匿名函数(闭包),但没有实际调用这个函数,所以函数内部的fopen()和fclose()代码根本没执行,自然不会生成目标文件。
对比第一段代码,它是直接执行了文件操作的代码,所以能正常创建文件。
要让第二段代码生效,你需要在定义完闭包后调用它,示例如下:
$callback = function() use($elements, $columns) { $file = fopen('/opt/test.csv', 'w'); fclose($file); }; // 调用闭包函数触发文件操作 $callback();
额外排查点:
- 确认运行代码的进程拥有
/opt目录的写入权限(第一段代码能运行的话,权限大概率没问题) - 确认
$elements和$columns变量已定义(若未定义会触发报错,你提到无报错则可忽略此点)
内容的提问来源于stack exchange,提问作者Totuxx
相关产品推荐
相关产品推荐

