Laravel命令执行时意外打印文件内容的解决方法问询
问题解决:Laravel Console命令中file_get_contents自动输出文件内容的问题
原因分析
你遇到的问题本质是PHP在CLI模式下,未被赋值的函数返回值会被自动输出到控制台。当你直接执行file_get_contents(dirname(__FILE__).'/templates/temp.php');而没有把结果存入变量时,PHP会将读取到的文件内容直接打印出来——这和文件后缀是.php无关,哪怕是.txt文件,这么写也会输出内容。
解决方法
只需要将file_get_contents的返回值赋值给一个变量,就能避免自动输出,后续正常处理内容即可:
// 将文件内容存入变量,不会自动输出 $content = file_get_contents(dirname(__FILE__).'/templates/temp.php'); // 执行你的修改操作,比如替换startphp为<?php $content = str_replace('startphp', '<?php', $content); // 写入新文件 file_put_contents('/目标文件路径/new_file.php', $content); // 最后输出成功提示 $this->info('操作成功');
额外验证
你可以简单测试:在单独的PHP脚本里写file_get_contents('test.txt');,运行后会直接打印文件内容;但如果写成$data = file_get_contents('test.txt');,就不会有任何输出,除非你主动执行echo $data。
内容的提问来源于stack exchange,提问作者Nikolaus Pluta
相关产品推荐
相关产品推荐

