【问题标题】:Move symfony vendor outside the root project将 symfony 供应商移出根项目
【发布时间】:2015-05-23 07:17:50
【问题描述】:

我想在我的 vagrant box 上加速我的 symfony2 项目,所以我想把我的供应商移到项目文件夹之外。

我已经将它们安装在 /home/vagrant/www/simtp/vendor 中,但是当包含 autoload.php 时出现权限错误。

Warning: require(/home/vagrant/www/simtp/vendor/autoload.php): failed to open stream: Permission denied in /var/www/simtp/app/autoload.php on line 11

Fatal error: require(): Failed opening required '/home/vagrant/www/simtp/vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/simtp/app/autoload.php on line 11

我已经测试过用 chown 更改权限,之前它是“root”,现在它是“www-data”(就像旧的供应商文件夹)。我已经测试过为 777 更改 chmod。

但是没有任何效果...:/ Ps : 我的缓存文件夹是空的。

我能做什么?

谢谢。

【问题讨论】:

  • 你使用过 composer install 吗?
  • 您是否考虑过使用 rsync 共享整个项目文件夹?这样可以加快速度。
  • Nawfal,是的,我使用 composer 在我的 symfony 项目中安装供应商。 Gerry,在我的情况下,rsync 只是单向且非常缓慢,我不知道为什么。 NFS 非常快,但是如果文件大小没有改变,文件就不想更新..而且我没有在 Apache 中将“SendFile”配置设置为 On,而且我不使用带有选项的 Sublime Text 3 “原子保存”。这就是为什么我希望我的供应商在我的项目之外使用带有 vagrant 的默认同步文件夹的原因。

标签: symfony vendor


【解决方案1】:

我不是这方面的专家,但由于没有其他人回复,我认为最简单的解决方案是将供应商文件移动到不在其他用户主目录中的目录。在这种情况下: /home/vagrant/

比方说: /var/www-vendor/simtp/app/

这个供应商目录应该有 chown 与 apache worker 兼容(所以它可以访问)

您也可以尝试此处描述的解决方案: https://unix.stackexchange.com/questions/91488/allow-a-user-to-read-some-other-users-home-directories

据我所知,尽管有标准权限,但用户主目录受到特别保护,这就是您遇到此问题的原因。

您也没有说明您使用的是什么 linux 发行版,因此您可以考虑将其添加到您的问题中,这样其他人就可以减少工作量。

【讨论】:

  • 移动vendor文件夹(有composer autoloader)后,不要忘记更改/vendor/composer/autoload_namespace.php中的“src”目录。
猜你喜欢
  • 2022-01-22
  • 2012-11-28
  • 2016-12-22
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多