Вы должны включить модуль env apache .
a2enmod env
Не регистрировать запросы, сделанные AWS ELB.
SetEnvIFNoCase User-Agent "ELB-HealthChecker/2.0" dontlog
Вам необходимо перезапустить службу Apache.
/etc/init.d/apache2 restart
Я докопался до сути. Короче говоря, двоичный файл используетsecure_getenv
для доступа к переменным среды. Это возвращает null
вместо доступа к переменным, когда двоичный файл запускается в режиме «безопасного выполнения» (AT_SECURE=1
). Наличие любой установленной возможности заставляет ее работать в этом режиме.
Подтвердите, что двоичный файл использует secure_getenv
, используяreadelf
:
readelf -a <path for service> | grep getenv
00000040ac28 004b00000007 R_X86_64_JUMP_SLO 0000000000000000 secure_getenv@GLIBC_2.17 + 0
00000040ad90 007a00000007 R_X86_64_JUMP_SLO 0000000000000000 getenv@GLIBC_2.2.5 + 0
75: 0000000000000000 0 FUNC GLOBAL DEFAULT UND secure_getenv@GLIBC_2.17 (6)
122: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getenv@GLIBC_2.2.5 (2)
Подтвердите, что он работает в режиме безопасного выполнения с переменными среды (какая ирония судьбы!)LD_DEBUG=all
и/илиLD_SHOW_AUXV
(см. man ld.so
).
Если это не так, то LD_SHOW_AUXV
выдает вывод с AT_SECURE
, установленным на 0. От LD_SHOW_AUXV
нет вывода, когда он работает в режиме безопасного выполнения.
Как правило, LD_DEBUG
тоже выводит/не выводит, когда он работает/не работает в режиме безопасного выполнения. Однако, если /etc/suid-debug
присутствует (пустой файл, создайте касанием ), тогда LD_DEBUG
будет производить вывод при работе в режиме безопасного выполнения.
См.man getauxval
для получения дополнительной информации о AT_SECURE
и безопасном режиме выполнения.