После обновления моей Homestead и установки пакетов я наткнулся на странную ошибку. При вызове php artisan
в качестве вывода было указано следующее:
In LoadConfiguration.php line 68:
Unable to load the "app" configuration file.
Несколько человек предполагают , что это является причиной того, что Windows (10) использует заглавные буквы в именах файлов. Однако это не видно в моих папках, а также не применяется в моей среде Ubuntu (18.04).
Из исходного кода LoadConfiguration.php
видно, что он использует класс Finder
из компонента symfony/finder
.
foreach (Finder::create()->files()->name('*.php')->in($configPath) as $file) {
$directory = $this->getNestedDirectory($file, $configPath);
$files[$directory.basename($file->getRealPath(), '.php')] = $file->getRealPath();
}
Проблема в том, что искатель возвращает итератор, который каким-то образом не может найти мои файлы конфигурации. Простой scandir($configPath)
возвращает все файлы:
.
..
app.php
and all other files
Заключение вызова в iterator_to_array()
возвращает пустой массив []
.
Следующий объект возвращается путем добавления ..->in($configPath)->getIterator()
:
Symfony\Component\Finder\Iterator\PathFilterIterator {#47
#matchRegexps: []
#noMatchRegexps: array:2 [
0 => "#(^|/)\..+(/|$)#"
1 => "#(^|/)\..+(/|$)#"
]
innerIterator: Symfony\Component\Finder\Iterator\FilenameFilterIterator {#43
#matchRegexps: array:1 [
0 => "#^(?=[^\.])[^/]*\.php$#"
]
#noMatchRegexps: []
innerIterator: Symfony\Component\Finder\Iterator\FileTypeFilterIterator {#39
-mode: 1
innerIterator: RecursiveIteratorIterator {#42
innerIterator: Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator {#46
-iterator: Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator {#48
-ignoreUnreadableDirs: false
-rewindable: null
-rootPath: "/home/vagrant/somepath/api/config"
-subPath: null
-directorySeparator: "/"
path: "/home/vagrant/somepath/api/config"
filename: "app.php"
basename: "app.php"
pathname: "/home/vagrant/somepath/api/config/app.php"
extension: "php"
realPath: "./config/app.php"
aTime: 2019-07-02 09:28:30
mTime: 2019-01-31 17:43:49
cTime: 2019-07-02 16:32:52
inode: 429
size: 9727
perms: 0100777
owner: 1000
group: 1000
type: "file"
writable: true
readable: true
executable: true
file: true
dir: false
link: false
}
-isRecursive: true
-excludedDirs: array:9 [
".svn" => true
"_svn" => true
"CVS" => true
"_darcs" => true
".arch-params" => true
".monotone" => true
".bzr" => true
".git" => true
".hg" => true
]
-excludedPattern: null
innerIterator: Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator {#48}
}
}
}
}
}
Предположим, я ничего не знаю об итераторах такого типа. Мне выделяются две вещи:
- Присутствует много
innerIterator
.
- Один итератор может найти что-то
#48
, мы можем видеть наш config/app.php
, но внутри ExcludeDirectoryFilterIterator
.
Кто-нибудь имел эту проблему раньше или знает, как вести меня в правильном направлении?
Были использованы следующие версии:
OS: Windows 10/Ubuntu 18.04 LTS
Homestead: 9.0.1
laravel/framework: 5.8.*/5.7.*
\ symfony/finder: ^4.2/^4.1,
EDIT
Понизил мою Усадьбу до v8.0.1
и все работает. Однако до сих пор нет объяснения, почему это произошло v9.0.1
.