如何创建一个Cakephp 3 Shell,在没有请求权限的情况下覆盖文件

时间:2016-07-13 10:49:07

标签: php shell cakephp cakephp-3.0

我正在使用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
  }
}
?>

TL;博士

请告诉我如何将单个shell脚本的交互属性设置为false,以便不要求用户允许覆盖文件。如果可能,请提供代码示例,不得在全球范围内应用解决方案。

谢谢。

1 个答案:

答案 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));