php использует живой сервер вместо локального сервера, несмотря на настройки виртуального хоста

php использует живой сервер вместо локального сервера, несмотря на настройки виртуального хоста

Я планировал перенести сайт на другой сервер,

Итак, скопировав код и базу данных и т. д., и изменив файл hosts на windows, все заработало почти так, как и ожидалось. Я смог загрузить сайт и использовать его для тестирования перед повторным указанием домена,

Однако есть одна часть функциональности, которая использует библиотеку php, которая находит URL-адреса изображений в коде html. Из-за этого мне приходится использовать внешние http-адреса для доступа к изображениям, даже если изображения находятся на том же сервере.

Моя проблема,

Несмотря на то, что все остальное на сайте использует новый локальный сервер, этот фрагмент кода по-прежнему обращается к работающему серверу, как будто для него не были настроены параметры виртуального хоста.

В моем /etc/sites-enabled/example.conf настроен виртуальный хост...

<VirtualHost *:80>
ServerAdmin [email protected]
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 для этого домена, но сначала мне нужно это проверить.

EDIT: Просто чтобы прояснить ситуацию,

Я использую Apache2 с Ubuntu.

Мой главный вопрос:

Когда мой PHP-код работает с URL-адресом изображения, например <img src="http://www.example.com/myimage.jpg" />, почему только в одном конкретном случае он загружает это изображение с РЕАЛЬНОГО сервера, на который указывает этот домен, а не с локального сервера, как все остальное?

решение1

Потому что PHP-код выполняется на новом сервере, а не на вашем клиенте. Если вы не внесете какие-либо изменения в конфигурацию DNS этого сервера (например, не добавите запись в файл hosts), PHP все равно будет считать (правильно), что www.example.com находится на рабочем сервере. PHP не просматривает конфигурацию Apache и не знает, что на сервере, на котором он запущен, есть Apache, который будет отвечать на запросы www.example.com.

Связанный контент