我们遇到访问多个Symfony3项目的问题,这些项目位于不同的文件夹中,并且针对相同的IP地址但在EC2上的不同端口中,例如:
PROJECT1:
project2:
发生在输入 项目1 (52.1.1.1:8080)时,它会正确显示,但之后访问 项目2 < / em> (52.1.1.1:8181),这失败了,奇怪的是从 Project 1 部署信息。
在另一种情况下,当重新启动apache服务并输入 Project2 (52.1.1.1:8181)时,所有内容都会正确显示,但如果输入 Project2 后,我们输入项目1 (52.1.1.1:8080),显示来自 Project2 的信息,而不是项目1 的信息。
端口 8080 和 8181 已打开。
服务器上的Apache配置如下:
Listen 8181
<VirtualHost *:8181>
DocumentRoot "/var/www/html/projects/project1/web"
DirectoryIndex app.php
<Directory "/var/www/html/projects/project1/web">
Require all granted
Order allow,deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/html/projects/project1>
Options FollowSymlinks
</Directory>
<Directory /var/www/html/projects/project1/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
CustomLog /var/www/html/projects/project1/var/logs/reg-access.log combined
ErrorLog /var/www/html/projects/project1/var/logs/reg.error.log
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
DocumentRoot "/var/www/html/projects/project2/web"
DirectoryIndex app.php
<Directory "/var/www/html/projects/project2/web">
Require all granted
Order allow,deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/html/projects/project2>
Options FollowSymlinks
</Directory>
<Directory /var/www/html/projects/project2/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
CustomLog /var/www/html/projects/project2/var/logs/reg-rm.log combined
ErrorLog /var/www/html/projects/project2/var/logs/reg.error.log
</VirtualHost>
关于会发生什么的任何帮助或想法?
已更新
要访问Project 1,请记录以下错误:
[2016-08-17 07:33:12] request.CRITICAL:未捕获PHP异常Symfony \ Component \ Debug \ Exception \ FatalErrorException:“错误:无法重新声明类Doctrine \ Common \ Annotations \ Annotation \ Target”at / var / www / html / projects / project2 /vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php第31行{“exception”:“[object](Symfony \ Component \ Debug \ Exception \ FatalErrorException(code:0):错误:无法在/ var / www / html / projects / project2 / vendor / doctrine /重新声明类Doctrine \ Common \ Annotations \ Annotation \ Target annotations / lib / Doctrine / Common / Annotations / Annotation / Target.php:31)“} []
“供应商”被另一个项目奇怪地引用
答案 0 :(得分:0)
我找到了一个临时解决方案,我不得不修改“app / autoload.php”文件
<强>之前强>
$ loader = require __DIR__.'/../vendor/autoload.php';
<强>后强>
$ loader = require __DIR__.'/../../project1/vendor/autoload.php';
这一切都运作正常。
但我与Javier Eguiluz沟通,他建议尝试在服务器上安装APC,我安装它,将更改回滚到文件“app / autoload.php”,它运行正常。
答案 1 :(得分:-1)
根据您的评论编辑#2。
Listen 8181
<VirtualHost *:8181>
Servername project1.com
...
Listen 8080
<VirtualHost *:8080>
Servername project2.com
DocumentRoot "/var/www/html/projects/project2/web"
DirectoryIndex app.php
在远程主机上编辑hosts文件以包含上述主机名。 例如,如果您位于远程Windows主机上,请按如下方式编辑文件“c:\ Windows \ System32 \ Drivers \ etc \ hosts”:
52.1.1.1 project1.com
52.1.1.1 project2.com
然后在浏览器中使用:
http://project1.com:8181
http://project2.com:8080
这应该有效。请在downvoting之前先调查。谢谢!