stream_resolve_include_path返回false?

时间:2017-03-07 11:42:25

标签: php zend-framework2 zend-validate zend-form2

我有一个正在实施InputFilterProviderInterface的字段集。我的getInputFilterSpecification函数如下所示:

public function getInputFilterSpecification() {
    $validator = new \Zend\Validator\File\Extension([
        '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虚拟机上运行。这是问题的一部分吗?即上述功能仅适用于兼容的操作系统?

1 个答案:

答案 0 :(得分:0)

短期解决方案 - 扩展验证程序并覆盖isValid函数。

找到这一行:

if (empty($file) || false === stream_resolve_include_path($file)) {

并将其替换为:

if (empty($file) || false === is_file($file)) {