Ubuntu

儘管有虛擬主機設置,php仍使用實時伺服器與本地伺服器相反

  • February 21, 2015

我曾計劃將網站遷移到另一台伺服器,

因此,複製了程式碼和數據庫等,並在 Windows 上更改了我的主機文件,一切都幾乎按預期工作。在重新指向域之前,我可以載入該站點並將其用於測試,

但是,有一項功能使用 php 庫來查找 html 程式碼中的圖像 url。因此,即使圖像在同一台伺服器上,我也必須使用外部 http url 來訪問圖像。

我的問題,

儘管該站點的其他所有內容都在使用新的本地伺服器,但這段程式碼仍在查看實時伺服器,就好像沒有為其設置虛擬主機設置一樣。

在我的 /etc/sites-enabled/example.conf 我有一個虛擬主機設置…

<VirtualHost *:80>
ServerAdmin info@example.com
ServerName example.com
ServerAlias www.example.com

DirectoryIndex index.php
DocumentRoot /var/www/html/example

ScriptAlias /cgi-bin /var/www/html/example/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>

ErrorLog /var/www/html/example/error.log
CustomLog /var/www/html/example/access.log combined
</VirtualHost>

除了上述的一個問題之外,這按預期工作,在這種情況下似乎忽略了它。

如果我更改了該域的實際 A 記錄,我相信這會起作用,但我需要先對其進行測試。

編輯:只是為了澄清更多,

我在 Ubuntu 上使用 Apache2。

我的核心問題是,

例如,當我的 php 程式碼使用圖像 url 時<img src="http://www.example.com/myimage.jpg" />,為什麼僅在一種特定情況下它從該域指向的真實伺服器載入此圖像,而不是像其他所有內容一樣從本地伺服器載入此圖像?

因為 PHP 程式碼是在新伺服器上執行的,而不是在您的客戶端上。除非您對該伺服器的 DNS 配置進行一些更改(例如,在 hosts 文件中添加一個條目),否則 PHp 仍會(正確地)相信 www.example.com 在實時伺服器上。PHP 不會查看 apache 配置,也不知道它執行的伺服器有一個 apache 會響應 www.example.com 請求。

引用自:https://serverfault.com/questions/670413