Ubuntu
儘管有虛擬主機設置,php仍使用實時伺服器與本地伺服器相反
我曾計劃將網站遷移到另一台伺服器,
因此,複製了程式碼和數據庫等,並在 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 請求。