De qualquer forma, para o PHP recuperar “hostname: port” do apache2handler?

2

Esta é uma programação limítrofe, mas estou postando aqui primeiro.

saída do PHPinfo

apache2handler
Apache Version  Apache/2.2.3 (CentOS)
Apache API Version  20051115
Server Administrator    root@localhost
Hostname:Port   localdomain.com:0
User/Group  apacheuser(500)/500 

Estou tentando encontrar uma maneira de o PHP recuperar o campo "Nome do host: porta" nessa área.

Temos o apache despejando todas as informações do nosso host virtual em um único arquivo, e então esse único arquivo é dividido em vários arquivos & informações relevantes (total de ocorrências, ect) são registradas em um banco de dados. Um dos problemas que estamos enfrentando no momento é que, se um domínio entrar em um ServerAlias, nosso software php não conseguirá encontrar a tabela do banco de dados contendo seus logs (porque o domínio tecnicamente não está correto). Nome do host: porta "campo em php / phpinfo (); Sempre recupera as informações que eu quero, que é o nome de domínio principal.

Se houver qualquer outro método, o PHP pode obter o campo "ServerName" do apache que eu não conheço, por favor me avise, pois isso seria muito mais fácil.

Uma abordagem alternativa é ter um comando SetEnv em cada host virtual, no entanto, em vez de ter que passar por e adicionar um

SetEnv primarydomain localdomain.com

para cada VirtualHost, existe uma maneira de usar uma variável?

No exemplo:

SetEnv primarydomain %v

Obrigado !!

--------------------- update ------------------------- -

Resolvemos o problema com uma pesquisa de expressão regular & substituir.

Pesquisa: ^ NomeServidor \ s \ b ((? = [a-z0-9 -] {1,63}.) [a-z0-9] + (- [a-z0-9] +) * .) + ([az] {2,63}) \ b

Substituir: $ & $ \ SetConv \ tprimariodominio \ t $ 1 $ 3

    
por GruffTech 23.07.2009 / 21:09

5 respostas

0

Problema resolvido com um regexp.

Pesquisa: ^ NomeServidor \ s \ b ((? = [a-z0-9 -] {1,63}.) [a-z0-9] + (- [a-z0-9] +) * .) + ([az] {2,63}) \ b

Substituir: $ & $ \ SetConv \ tprimariodominio \ t $ 1 $ 3

    
por 27.07.2009 / 14:09
0

Se o padrão $ _SERVER ['SERVER_NAME'] não é o que você está procurando, você já tentou $ _SERVER ['SERVER_SIGNATURE']?

link

    
por 23.07.2009 / 21:21
0

Você define a diretiva ServerAdmin no host virtual?

Se sim, usaria $_SERVER['SERVER_ADMIN'] e pegaria a última parte do endereço de e-mail após o símbolo @.

Exemplo:

array_pop(split("@", $_SERVER['SERVER_ADMIN'], 2))'
    
por 24.07.2009 / 01:27
0

Se você não estiver interessado nos nomes de host fornecidos pelo cliente, talvez queira usar as diretivas:

UseCanonicalName e UseCanonicalPhysicalPort .

    
por 27.07.2009 / 14:34
0

Para o nome real do servidor (do sistema operacional, não do servidor virtual):

echo php_uname('n');

Para a porta:

echo $_SERVER["SERVER_PORT"];
    
por 17.02.2014 / 18:57