stream_resolve_include_path returning false?



我有一个实现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)) {