Windows 上通过 Vagrant 的 Symfony 2 有错误,因为 Symfony 试图使用 Windows 和 Linux 路径的混搭来查找 twig 文件
Symfony 2 through Vagrant on Windows has errors, because Symfony tries to look for twig files using a mish-mash of Windows and Linux paths
每当我尝试访问(几乎)任何 page/route 时,我都会收到如下错误:
ContextErrorException in Filesystem.php line 130:
Warning:
file_get_contents(C:_CODE\symfony2\vendor\sensio\distribution-bundle\Sensio\Bundle\DistributionBundle/Resources/views/Configurator/Step/doctrine.html.twig):
failed to open stream: No such file or directory
基本上,Symfony 似乎将来自 Vagrant/Linux 和 Windows 环境的 URL 拼凑在一起,因此无法找到一堆 twig 文件。
关于我的设置的一些信息:
我在 Windows 机器上有我的 Symfony 文件,它们被映射到 Vagrant 盒子上。我只是利用默认的“。” -> "/vagrant" 映射,然后让 puppet 配置从 "/vagrant/web" -> "/var/www" 创建一个符号链接("." 是 Symfony 和 vagrantfile 所在的位置)。设置基本上是从 https://github.com/nater1067/Vagrant-Symfony-2. Just to make sure it wasn't me, I used the "stock" git pull from that repo, and went to http://localhost/config 复制的(在注释掉只允许来自本地主机的连接的限制之后),上面的错误出现在第 2 步。
我试过的:
正如您从 repo 的 puppet 文件中看到的那样,它似乎已经正确地将网络文件的所有者 (/var/www/*) 设置为 vagrant:vagrant。我也试过将整个 C 驱动器映射到 /vagrant/c。然后使用符号链接将正确的 ../%Symfony%/web 文件放入 /var/www,但这也不起作用。我还尝试将 /var/www.
下的所有目录和文件的权限设置为 777
问题:
我还需要对 Windows/Vagrant/Symfony 设置做些什么来确保 Symfony 不会尝试拼凑 Linux 和 Windows 路径吗?我的下一步是放弃,并将文件从 Windows sftp 到 vagrant box。
您应该简单地反转您的配置。把你的 Symfony 文件放在你的 Vagrant 盒子里;接下来,使用某种网络共享,使用一些东西在外面编辑它们。
这只有一个缺点:与 Vagrant 盒子的连接速度可能很慢,尤其是使用 NFS 进行共享时。
您是否在本地计算机上执行任何 symfony 命令?基本上你应该只通过你的 IDE 编辑文件,其他一切都应该在 vagrant 机器上。 Symfony 本身永远不会意识到涉及另一个 OS 的事实。只要您 运行 虚拟机中的所有内容都不会发生这种情况。
每当我尝试访问(几乎)任何 page/route 时,我都会收到如下错误:
ContextErrorException in Filesystem.php line 130: Warning: file_get_contents(C:_CODE\symfony2\vendor\sensio\distribution-bundle\Sensio\Bundle\DistributionBundle/Resources/views/Configurator/Step/doctrine.html.twig): failed to open stream: No such file or directory
基本上,Symfony 似乎将来自 Vagrant/Linux 和 Windows 环境的 URL 拼凑在一起,因此无法找到一堆 twig 文件。
关于我的设置的一些信息:
我在 Windows 机器上有我的 Symfony 文件,它们被映射到 Vagrant 盒子上。我只是利用默认的“。” -> "/vagrant" 映射,然后让 puppet 配置从 "/vagrant/web" -> "/var/www" 创建一个符号链接("." 是 Symfony 和 vagrantfile 所在的位置)。设置基本上是从 https://github.com/nater1067/Vagrant-Symfony-2. Just to make sure it wasn't me, I used the "stock" git pull from that repo, and went to http://localhost/config 复制的(在注释掉只允许来自本地主机的连接的限制之后),上面的错误出现在第 2 步。
我试过的:
正如您从 repo 的 puppet 文件中看到的那样,它似乎已经正确地将网络文件的所有者 (/var/www/*) 设置为 vagrant:vagrant。我也试过将整个 C 驱动器映射到 /vagrant/c。然后使用符号链接将正确的 ../%Symfony%/web 文件放入 /var/www,但这也不起作用。我还尝试将 /var/www.
下的所有目录和文件的权限设置为 777问题:
我还需要对 Windows/Vagrant/Symfony 设置做些什么来确保 Symfony 不会尝试拼凑 Linux 和 Windows 路径吗?我的下一步是放弃,并将文件从 Windows sftp 到 vagrant box。
您应该简单地反转您的配置。把你的 Symfony 文件放在你的 Vagrant 盒子里;接下来,使用某种网络共享,使用一些东西在外面编辑它们。
这只有一个缺点:与 Vagrant 盒子的连接速度可能很慢,尤其是使用 NFS 进行共享时。
您是否在本地计算机上执行任何 symfony 命令?基本上你应该只通过你的 IDE 编辑文件,其他一切都应该在 vagrant 机器上。 Symfony 本身永远不会意识到涉及另一个 OS 的事实。只要您 运行 虚拟机中的所有内容都不会发生这种情况。