我無法理解我的場景中發生了什麼。無論是apache始終服務於第一個虛擬主機文件或php會話正在共享。apache是只提供一個應用程序還是共享PHP會話?
我試圖創造同一服務器上的DEV/QA環境中,我使用的Symfony2框架(謝天謝地PROD是一個獨立的,並且不受此)。我不使用Symfony前端控制器的原因是因爲我使用php deployer來部署垂直。我創建2個目錄:
/var/www/html/app1
/var/www/html/app2
和2個虛擬主機:
app.domain:80 points to app1
app.domain:8080 points to app2
和2個數據庫:
app_dev: blank
app_qa: copy of prod
App1是我的DEV,我可以打破事情,我有完整的調試信息顯示。 App2是我的用戶測試的QA。
這裏是我重新啓動Apache後,我觀察行爲:
如果我瀏覽到DEV apache的重啓我看到DEV數據/代碼,一切工作正常後。現在,如果我打開QA(不管是在同一個瀏覽器還是另一個不同的瀏覽器),我仍然可以看到來自DEV的相同數據。現在,如果我再次重新啓動apache並首先瀏覽到QA,那麼這次我會看到來自QA的數據/代碼。如果我再打開DEV,它仍然是QA。
爲什麼是這種情況發生,我怎麼能避免這種情況。我不知道它是我的apache配置,還是因爲php會話正在兩臺主機之間共享。
虛擬主機配置:
應用1:80
DocumentRoot /var/www/html/app1/current/web
ServerName app1.domain
<Directory "/var/www/html/app1/current/web">
AllowOverride None
Require all granted
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
應用2:8080
DocumentRoot /var/www/html/app2/current/web
ServerName app2.domain
<Directory "/var/www/html/app2/current/web">
AllowOverride None
Require all granted
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
如何使用不同的瀏覽器導致相同的行爲。那就是如果我用chrome打開app1,然後用Firefox打開app2,我會在兩個瀏覽器上看到app1。 –
@JohntheRipper,所以你可以提供一些代碼。 – invisal
在這種情況下,我不確定要提供什麼代碼。正如我所說我正在使用symfony2框架,它處理會話。這個問題可能與php共享會話或Apache配置的方式有關。我將通過製作幾個虛擬虛擬主機來測試一些測試,以瞭解內容的獲取方式。感謝 –