DirectoryIterator 忽略 vagrant 同步文件夹中的目录
DirectoryIterator ignoring directories in vagrant synced folders
我正在使用 laravel/homestead vagrant box。
当我尝试将 DirectoryIterator
用于同步文件夹时,它 returns 只有“点”条目(..
、.
)。
我的 vagrant 同步文件夹称为 code
(在 vmbox 中),在这个目录中我有我的 vagrant 文件和项目代码,所以当我使用 DirectoryIterator
作为 /home/vagrant
它列出所有目录都没有问题,包括 code
目录。但是当我将它用于 /home/vagrant/code
时,只显示点条目,其他目录将被忽略。 scandir()
正常工作并毫无问题地列出所有目录。
编辑:
这是代码和输出:
foreach (new DirectoryIterator('/home/vagrant') as $fileInfo) {
echo $fileInfo->getFilename() . "<br>\n";
}
outputs:
.
..
.ssh
.sudo_as_admin_successful
.composer
.local
code
.config
.bash_aliases
.wget-hsts
.npm
foreach (new DirectoryIterator('/home/vagrant/code') as $fileInfo) {
echo $fileInfo->getFilename() . "<br>\n";
}
outputs:
.
..
foreach (scandir('/home/vagrant/code') as $fileInfo) {
echo $fileInfo. "<br>\n";
}
outputs:
.
..
.vagrant
Homestead.yaml
LICENSE.txt
Vagrantfile
after.sh
aliases
bin
composer.json
composer.lock
homestead
project
readme.md
scripts
src
我对 vagrant 也有同样的问题。我调试了一下,发现问题出在同步文件夹的 文件类型 而不是 DirectoryIterator
问题
Vagrantfile - 文件夹同步配置问题
config.vm.synced_folder "/var/www/virtual/machine/folder", "/var/www/host/machine/folder"
在上面的配置中,我没有为 sync 文件夹指定任何文件 type。因此,Vagrant 会自动为我的环境选择最佳同步文件夹选项
解决方案
我已将同步文件夹文件类型更改为"nfs",这解决了问题
Vagrantfile - 解决方案
config.vm.synced_folder "/var/www/virtual/machine/folder", "/var/www/host/machine/folder", type: "nfs"
备注
Before using synced folders backed by NFS, the host machine must have nfsd installed, the NFS server daemon. This comes pre-installed on Mac OS X, and is typically a simple package install on Linux.
我正在使用 laravel/homestead vagrant box。
当我尝试将 DirectoryIterator
用于同步文件夹时,它 returns 只有“点”条目(..
、.
)。
我的 vagrant 同步文件夹称为 code
(在 vmbox 中),在这个目录中我有我的 vagrant 文件和项目代码,所以当我使用 DirectoryIterator
作为 /home/vagrant
它列出所有目录都没有问题,包括 code
目录。但是当我将它用于 /home/vagrant/code
时,只显示点条目,其他目录将被忽略。 scandir()
正常工作并毫无问题地列出所有目录。
编辑: 这是代码和输出:
foreach (new DirectoryIterator('/home/vagrant') as $fileInfo) {
echo $fileInfo->getFilename() . "<br>\n";
}
outputs:
.
..
.ssh
.sudo_as_admin_successful
.composer
.local
code
.config
.bash_aliases
.wget-hsts
.npm
foreach (new DirectoryIterator('/home/vagrant/code') as $fileInfo) {
echo $fileInfo->getFilename() . "<br>\n";
}
outputs:
.
..
foreach (scandir('/home/vagrant/code') as $fileInfo) {
echo $fileInfo. "<br>\n";
}
outputs:
.
..
.vagrant
Homestead.yaml
LICENSE.txt
Vagrantfile
after.sh
aliases
bin
composer.json
composer.lock
homestead
project
readme.md
scripts
src
我对 vagrant 也有同样的问题。我调试了一下,发现问题出在同步文件夹的 文件类型 而不是 DirectoryIterator
问题
Vagrantfile - 文件夹同步配置问题
config.vm.synced_folder "/var/www/virtual/machine/folder", "/var/www/host/machine/folder"
在上面的配置中,我没有为 sync 文件夹指定任何文件 type。因此,Vagrant 会自动为我的环境选择最佳同步文件夹选项
解决方案
我已将同步文件夹文件类型更改为"nfs",这解决了问题
Vagrantfile - 解决方案
config.vm.synced_folder "/var/www/virtual/machine/folder", "/var/www/host/machine/folder", type: "nfs"
备注
Before using synced folders backed by NFS, the host machine must have nfsd installed, the NFS server daemon. This comes pre-installed on Mac OS X, and is typically a simple package install on Linux.