У меня есть fieldset, который реализует 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. Это часть проблемы? т.е. вышеуказанная функция работает только на совместимых операционных системах?
Краткосрочное решение — расширить валидатор и перезаписать isValid
функция.
Найдите строку:
if (empty($file) || false === stream_resolve_include_path($file)) {
и заменить его на:
if (empty($file) || false === is_file($file)) {
Других решений пока нет …