Defina variáveis de ambiente específicas do Apache no Windows

2

Eu usei o Apache no Ubuntu é o passado. Existe um arquivo envvars contendo variáveis de ambiente usadas pelo Serviço Apache. Não consigo encontrar esse arquivo para o Windows.

Existem duas abordagens que encontrei para lidar com isso. Eu encontrei o Apache ler variáveis de ambiente do Windows. Mas eu não gosto disso, pois eles são globais e não específicos de aplicativos.

Outra opção que encontrei é criar um arquivo .bat, definir variáveis de env e, em seguida, iniciar httpd.exe . Mas o problema com isso é que ele não funciona com o Apache Service.

Outra opção que eu encontrei é usar nssm . Permite criar um serviço personalizado com variáveis de ambiente específicas do serviço. Mas estou recebendo AH00141: Could not initialize random number generator error se eu usá-lo.

Existe alguma outra opção alternativa que eu possa usar?

    
por VarunAgw 09.03.2016 / 11:50

2 respostas

2

Você pode usar a diretiva SetEnv no Apache para configurar suas próprias variáveis de ambiente específicas para seu aplicativo.

Mais detalhes aqui link Você pode colocar esses valores dentro do seu host Virtual ou httpd.conf

    
por 09.03.2016 / 12:43
0

Acabei escrevendo um wrapper que substituiu httpd.exe . Renomei httpd.exe para httpd2.exe e usei este wrapper httpd.sh para executá-lo. É basicamente definir temporariamente as variáveis de ambiente do sistema antes de iniciar o serviço do apache. Depois que o serviço for iniciado, ele será excluído.

#!/bin/bash

PHP_INI_SCAN_DIR="C:\Server\PHP.0\conf;C:\Server\Config\PHP"

if [ "stop" == "$*" ]; then
    exec /c/Server/Apache/bin/httpd2.exe -k stop
elif [ "" == "$*" ]; then
    export PHP_INI_SCAN_DIR
    echo "Starting Apache in console mode"
    /c/Server/Apache/bin/httpd2.exe
elif [ "start" == "$*" ]; then
    /bin/regtool set "/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment/PHP_INI_SCAN_DIR" "$PHP_INI_SCAN_DIR" -s
    /c/Server/Apache/bin/httpd2.exe -k start
    /bin/regtool unset "/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment/PHP_INI_SCAN_DIR"  
elif [ "restart" == "$*" ]; then
    #/bin/regtool set "/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment/PHP_INI_SCAN_DIR" "$PHP_INI_SCAN_DIR" -s
    #/c/Server/Apache/bin/httpd2.exe -k stop
    #/c/Server/Apache/bin/httpd2.exe -k start
    #/bin/regtool unset "/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment/PHP_INI_SCAN_DIR"
    /c/Server/Apache/bin/httpd2.exe -k restart # ENV don't reload this way :(
else
    /c/Server/Apache/bin/httpd2.exe "$*"
fi 
    
por 11.06.2016 / 00:38