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
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?
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
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