我正在使用Cakephp 3.2,这真棒!
我有一个shell脚本非常礼貌地询问我是否要覆盖我的文件 - 我担心shell在作为cron作业运行时不会完成预期的结果。
#example of current shell output
File 'webroot/example.json' exists
Do you want to overwrite? (y/n/a/q)
文档说:" 如果shell的交互属性为false,则不会询问任何问题,文件只会被覆盖。" (http://book.cakephp.org/3.0/en/console-and-shells.html#creating-files)这似乎表明任何shell都可以改变"互动"财产,但我还没有办法做到这一点。
我可能会将此更改为false(http://api.cakephp.org/3.2/source-class-Cake.Console.Shell.html#84),但我认为这会影响所有shell,不会谢谢。
示例代码:
class ExampleShell extends Shell {
public function initialize() {
parent::initialize();
}
public function main() {
$array = [1,2,3];
$this->createFile('webroot/example.json', json_encode($array)); //this file already exists
}
}
?>
请告诉我如何将单个shell脚本的交互属性设置为false,以便不要求用户允许覆盖文件。如果可能,请提供代码示例,不得在全球范围内应用解决方案。
谢谢。
答案 0 :(得分:1)
感谢@ AD7six的评论让我看到了更大的图景。我能够替换一行代码,现在我的cron工作正常工作!
//replaced this
$this->createFile('webroot/example.json', json_encode($array));
//with this
file_put_contents('webroot/example.json', json_encode($array));