我有一个实现InputFilterProviderInterface
的字段集。我的getInputFilterSpecification
功能看起来像这样:
public function getInputFilterSpecification() {
$validator = new ZendValidatorFileExtension([
'jpg',
'jpeg',
'png',
'gif',
]);
return [
[
'name' => 'logo',
'required' => false,
'validators' => [
$validator,
],
],
];
}
您可以猜到,我正在尝试通过扩展验证文件上传。
我的问题是验证者正在提供错误消息
文件不可读取或不存在
查看Extension
类我发现了引起问题的功能:stream_resolve_include_path($file)
。当我 var_dump
$file
时,我会得到以下输出:
c: windows temp php6be7.tmp
那么...为什么stream_resolve_include_path
无法解决此路径?我该如何修复?
这当前正在Windows虚拟机上运行。这是问题的一部分吗?即以上功能仅适用于兼容操作系统?
短期解决方案 - 扩展验证器并覆盖isValid
函数。
找到该行:
if (empty($file) || false === stream_resolve_include_path($file)) {
并将其替换为:
if (empty($file) || false === is_file($file)) {