我在 Ubuntu 上运行 Apache/2.4.12,我在/etc/apache2/sites-available/文件夹中添加了 2 个 .conf 文件,并启用了它们。两个站点都使用相同的 Symfony PHP 文件。
aaa.conf
Listen 8080
<VirtualHost *:8080>
ServerName local.aaa.com
ServerAlias www.local.aaa.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/aaa/web
<Directory "/var/www/html/aaa/web">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/aaa_error.log
CustomLog ${APACHE_LOG_DIR}/aaa_access.log combined
</VirtualHost>
bbb.conf
Listen 8081
<VirtualHost *:8081>
ServerName local.bbb.com
ServerAlias www.local.bbb.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/bbb/web
<Directory "/var/www/html/bbb/web">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/bbb_error.log
CustomLog ${APACHE_LOG_DIR}/bbb_access.log combined
</VirtualHost>
我遇到的问题是,在 service apache2 reload
之后,只有我打开的第一个站点有效。例如:
第一种情况
- 我重新加载
- 我打开 local.aaa.com:8080 它有效
- 我打开 local.bbb.com:8081 它不起作用,我收到 PHP fatal error :找不到类 'AppBundle\\AppBundle'
第二种情况
- 我重新加载
- 我打开 local.bbb.com:8081 它有效
- 我打开 local.aaa.com:8080 它不起作用,我收到 PHP fatal error :找不到类 'AppBundle\\AppBundle'
编辑
@瑞安文森特:
netstat -a
显示两个站点都在运行
最佳答案
所有的 Listen 指令都应该在 Ubuntu 提供的主 apache 配置文件中(/etc/apache2/apache2.conf)。
sites-enabled 文件夹必须只包含使用 a2ensite 生成的正确符号链接(symbolic link)到 sites-available,这是您必须放置虚拟主机配置的地方。
将它们移到那里后,启用每个虚拟主机并重新加载 apache。
sudo a2ensite aaa.conf
sudo a2ensite bbb.conf
sudo service apache2 reload
关于php - apache2 多个虚拟主机,但只有第一个有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538964/