CakePHP SaveAll 文件名

CakePHP SaveAll filename

当我尝试使用 saveAll 功能时,当有图像上传到数据时无法正确保存。

$this->Deal->saveAll($this->request->data);

这是一个有效的数据示例:

array(2) {
  ["Resort"]=>
  array(8) {
    ["resort"]=>
    string(4) "Test"
    ["rating"]=>
    string(3) "4.0"
    ["image_link"]=>
    string(0) ""
    ["trip_advisor"]=>
    string(12) "123123123123"
    ["image"]=>
    string(0) ""
    ["deal_id"]=>
    string(3) "258"
    ["id"]=>
    string(3) "245"
    ["filename"]=>
    array(5) {
      ["name"]=>
      string(0) ""
      ["type"]=>
      string(0) ""
      ["tmp_name"]=>
      string(0) ""
      ["error"]=>
      int(4)
      ["size"]=>
      int(0)
    }
  }
  ["Deal"]=>
  array(1) {
    ["id"]=>
    string(3) "258"
  }
}

这是一个无效的数据示例:

array(2) {
  ["Resort"]=>
  array(8) {
    ["resort"]=>
    string(4) "Test"
    ["rating"]=>
    string(3) "4.0"
    ["image_link"]=>
    string(40) "http://google.com"
    ["trip_advisor"]=>
    string(6) "123123"
    ["image"]=>
    string(0) ""
    ["deal_id"]=>
    string(3) "258"
    ["id"]=>
    string(3) "245"
    ["filename"]=>
    array(5) {
      ["name"]=>
      string(12) "logo.png"
      ["type"]=>
      string(9) "image/png"
      ["tmp_name"]=>
      string(14) "/tmp/phpZtCTVC"
      ["error"]=>
      int(0)
      ["size"]=>
      int(3702)
    }
  }
  ["Deal"]=>
  array(1) {
    ["id"]=>
    string(3) "258"
  }
}

更新

不仅不保存,还什么都没有返回。当我尝试 var_dump:

时我得到一个空白页面
var_dump($this->Deal->saveAll($this->request->data));

此外,error_log.

也没有错误

更新 2

进一步挖掘后,我发现这是内存限制的问题,所以我更新了限制,现在我得到了错误:

Can not determine the mimetype.

根据我在 CakePHP 的验证 class 中看到的内容,它正在尝试获取 tmp_name 的 mime 类型,即 /tmp/phpZtCTVC 并且它似乎无法获取所以它抛出异常。

原来问题是 php 扩展 fileinfo 没有启用。

刚刚使用扩展重新编译了 php,之后一切正常。 :)