Recarregue o apache após mudanças na rede com o systemd

0

Eu tenho uma VM Fedora 25 em execução no Hyper-V. Essa VM é usada para um aplicativo PHP em execução no Apache. Está atualizado e funcionando com tudo.

Um simples script php para se conectar a um site remoto falha quando executado no Apache, mas funciona bem na linha de comando:

$host='tcp://www.shinyandnew.ca/';
$socket = stream_socket_client($host, $errno, $errstr, 10, STREAM_CLIENT_CONNECT, stream_context_create());

if (!$socket) {
    print ("Unable to connect to ${host}: ${errno} ${errstr}\n");
} else {
    print ("Connected to ${host} successfully \n");
  fclose($socket);
}

O erro é

php_network_getaddresses: getaddrinfo failed: Name or service not known

No entanto, a VM tem acesso à rede e tudo funciona bem na linha de comando do php. Isso sugere que é um problema do Apache. Além disso: se eu reiniciar o Apache, o problema desaparece.

Assim, minha pergunta:

Como posso forçar o Apache a resolver nomes corretamente após uma reinicialização? Se eu precisar recarregar o Apache depois de cada mudança de rede, isso é aceitável para esta instalação (é uma estação de trabalho dev): como faço para acionar isso automaticamente para que funcione na inicialização? Existe um método systemd para fazer isso?

    
por Mr. Shiny and New 安宇 24.10.2017 / 22:51

2 respostas

1

Você não precisa acionar uma nova carga ou um reinício. Você simplesmente precisa garantir que o Apache não seja iniciado até que /etc/resolv.conf tenha sido escrito por qualquer coisa que esteja fazendo isso no bootstrap. O conselho do rastreador de erros do PHP é usar um arquivo de substituição do systemd para adicionar uma extensão After= nomeando os serviços relevantes para httpd.service :

cd /etc/systemd/system/
install -m 0755 -d httpd.d
echo >> httpd.d/after.conf "[Unit]"
echo >> httpd.d/after.conf "After=network.service systemd-networkd.service network-online.target"

Leitura adicional

por 25.10.2017 / 05:43
0

Coloque um script de recarregamento do Apache na pasta /etc/NetworkManager/dispatcher.d . Fonte: Executar o daemon na inicialização no Fedora 13 após o lançamento da interface sem fio

OU acione a configuração do Apache para recarregar a partir do Upstart conf.

Quero dizer algo como

start on net-device-up - mas isso pode ser específico do Ubuntu.

    
por 24.10.2017 / 23:34