簡體   English   中英

DirectoryIterator 忽略 vagrant 同步文件夾中的目錄

[英]DirectoryIterator ignoring directories in vagrant synced folders

我正在使用 laravel/homestead vagrant 盒子。 當我嘗試將DirectoryIterator用於同步文件夾時,它僅返回“點”條目( ... )。

我的 vagrant 同步文件夾稱為code (在 vmbox 中),在這個目錄中我有我的 vagrant 文件和項目代碼,所以當我使用DirectoryIterator for /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"

在上述配置中,我沒有為同步文件夾指定任何文件類型 因此,Vagrant 會自動為我的環境選擇最佳同步文件夾選項

解決方案

我已將同步文件夾文件類型更改為“nfs” ,從而解決了問題

Vagrantfile - 解決方案

config.vm.synced_folder "/var/www/virtual/machine/folder", "/var/www/host/machine/folder", type: "nfs"

筆記

在使用 NFS 支持的同步文件夾之前,主機必須安裝 nfsd,即 NFS 服務器守護程序。 它預裝在 Mac OS X 上,通常是簡單的 package 安裝在 Linux 上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM