
Eu tinha planejado migrar um site para outro servidor,
Então, depois de copiar o código e o banco de dados, etc., e alterar meu arquivo hosts no Windows, tudo funcionou quase como esperado. Eu poderia carregar o site e usá-lo para testes antes de renomear o domínio,
No entanto, existe uma funcionalidade que usa uma biblioteca php que encontra URLs de imagens em código HTML. Por causa disso devo usar URLs http externos para acessar as imagens, mesmo que as imagens estejam no mesmo servidor.
Meu problema,
Embora todo o resto do site esteja usando o novo servidor local, esse trecho de código ainda olha para o servidor ativo como se nenhuma configuração de host virtual tivesse sido definida para ele.
No meu /etc/sites-enabled/example.conf eu tenho um host virtual configurado ...
<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>
Isso está funcionando conforme o esperado, exceto o problema descrito acima, parece estar ignorando-o nesse caso.
Eu teria certeza de que isso funcionaria se eu alterasse os registros A reais desse domínio, mas preciso testá-lo primeiro.
EDITAR: Só para esclarecer mais,
Estou usando o Apache2 com Ubuntu.
Minha questão central é:
Quando meu código php está funcionando com uma url de imagem, por exemplo <img src="http://www.example.com/myimage.jpg" />
, por que apenas em um caso específico ele está carregando esta imagem do servidor REAL para o qual aquele domínio está apontando, e não do servidor local como todo o resto?
Responder1
Porque o código PHP está sendo executado no novo servidor, não no seu cliente. A menos que você faça alguma alteração na configuração DNS desse servidor (por exemplo, adicionando uma entrada ao arquivo hosts), o PHP ainda acreditará (corretamente) que www.example.com está no servidor ativo. O PHP não analisa a configuração do Apache e não tem conhecimento de que o servidor em que está sendo executado possui um Apache que responderá às solicitações www.example.com.