我在ArchLinux x86_64上使用Apache 2.4.10
我有许多虚拟主机(对于每个项目),具有以下模板
<VirtualHost *:80>
DocumentRoot $TMPL_DIRECTORY
<Directory $TMPL_DIRECTORY>
Options Indexes FollowSymLinks Includes
AllowOverride All
Require all granted
</Directory>
ServerName $TMPL_NAME
ErrorLog "/var/log/httpd/${TMPL_NAME}-error_log"
CustomLog "/var/log/httpd/${TMPL_NAME}-access_log" common
</VirtualHost>
其中$TMPL_DIRECTORY
是项目网站目录的路径,TMPL_NAME
是网址
将url追加到我的hosts文件后工作正常
现在我有两个项目
我在项目1中工作,当我切换到project2时总是出现错误
FatalErrorException: Error: Cannot redeclare class Doctrine\Common\Annotations\Annotation\Target in /home/rkmax/Development/project1/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php line 31
我无法理解为什么从 project1 读取该文件我必须重新启动apache并且一切正常再次
我启用了以下php扩展
答案 0 :(得分:0)
远射,但我认为可能如下:
在您使用web/app.php
的两个应用程序的ApcClassLoader
中。 ApcClassLoader
获取缓存前缀。代码看起来像这样。
$loader = new ApcClassLoader('sf2', $loader);
$loader->register(true);
现在,作为per the documentation,如果您在同一台服务器上运行同一应用程序的不同实例,则必须至少更改其中一个的前缀。
因此,web/app.php
文件中的代码应如下所示:
// in the first instance
$loader = new ApcClassLoader('sf2_app1', $loader);
$loader->register(true);
// in the second instance
$loader = new ApcClassLoader('sf2_app2', $loader);
$loader->register(true);
当然,如果您正在使用它进行部署,请不要忘记在web/app.php.dist
中执行相同操作。
之后,再次重启Apache,以确保刷新缓存的web / app.php文件(如果您使用带有stat=0
的APC)。