У меня есть проксирование Apache 2.4 на PHP7.4.4 php-fpm, и я пытаюсь скрыть или отключить переменную $ _SERVER ['LD_LIBRARY_PATH'].
Как мне изменить или избавиться от этой переменной $ _SERVER ['LD_LIBRARY_PATH'] в выводе PHP?
Предположим, что apache2.4 установлен в / apache24.
==userX-fpm-pool.conf==
[userX]
user = userX
group = userX
listen = 127.0.0.1:9003
clear_env = yes
env['LD_LIBRARY_PATH'] = /fakepath
==php.ini==
variables_order = "GPCS"
==userX-vhost.conf==
<VirtualHost *:80>
ServerName userX.xxxxxx.com
ServerAdmin webmaster@localhost
DocumentRoot /userX/home/www
UnsetEnv LD_LIBRARY_PATH
<Directory /userX/home/www>
Options Indexes FollowSymLinks
DirectoryIndex index.php index.html
Require all granted
AllowOverride All
</Directory>
ProxyPassMatch "^/(.*\.php(/.*)?)$" "fcgi://127.0.0.1:9003/"
</VirtualHost>
==index.php==
<?php
print_r($_ENV);
print_r($_SERVER);
Результат curl:
curl -H "Host: userX.xxxxxx.com" http://127.0.0.1
Array
(
)
Array
(
[LD_LIBRARY_PATH] => /apache24/lib --> How do I change or get rid of this variable?
[USER] => userX
[HOME] => /home
[SCRIPT_NAME] => /index.php
[REQUEST_URI] => /
[QUERY_STRING] =>
[REQUEST_METHOD] => GET
[SERVER_PROTOCOL] => HTTP/1.1
[GATEWAY_INTERFACE] => CGI/1.1
[REMOTE_PORT] => 49248
[SCRIPT_FILENAME] => //index.php
[SERVER_ADMIN] => webmaster@localhost
[CONTEXT_DOCUMENT_ROOT] => /userX/home/www
[CONTEXT_PREFIX] =>
[REQUEST_SCHEME] => http
[DOCUMENT_ROOT] => /userX/home/www
[REMOTE_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[SERVER_ADDR] => 127.0.0.1
[SERVER_NAME] => userX.xxxxxx.com
[SERVER_SOFTWARE] => Apache/2.4.43 (Unix) OpenSSL/1.1.1 PHP/7.4.4
[SERVER_SIGNATURE] =>
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[HTTP_ACCEPT] => */*
[HTTP_USER_AGENT] => curl/7.58.0
[HTTP_HOST] => userX.xxxxxx.com
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1587830093.9565
[REQUEST_TIME] => 1587830093
)
Решил это. Решение состоит в том, чтобы закомментировать параметр LD_LIBRARY_PATH и экспортировать строки в файле envvars в каталоге bin httpd-2.4.3, а затем изменить файл конфигурации пула FPM на желаемое значение env. Поскольку каталог lib / предназначен для внешней связи и мне он не нужен, apachectl запускается нормально. Единственное предостережение в том, что ./apachectl restart не работает, вам нужно вручную выполнить ./apachectl stop, а затем ./apachectl start, чтобы изменения вступили в силу.
==envvars==
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# envvars-std - default environment variables for apachectl
#
# This file is generated from envvars-std.in
#
#if test "x$LD_LIBRARY_PATH" != "x" ; then
# LD_LIBRARY_PATH="/apache24/lib:$LD_LIBRARY_PATH"
#else
# LD_LIBRARY_PATH="/apache24/lib"
#fi
#export LD_LIBRARY_PATH
#
==userX-fpm-pool.conf==
[userX]
user = userX
group = userX
listen = 127.0.0.1:9003
clear_env = yes
env['LD_LIBRARY_PATH'] = /fakepath
root@instance:/apache24/bin# ./apachectl stop && ./apachectl start
curl -H "Host: userX.xxxxxx.com" http://127.0.0.1
Array
(
)
Array
(
[LD_LIBRARY_PATH] => /fakepath
[USER] => userX
[HOME] => /home
[SCRIPT_NAME] => /index.php
[REQUEST_URI] => /
[QUERY_STRING] =>
[REQUEST_METHOD] => GET
[SERVER_PROTOCOL] => HTTP/1.1
[GATEWAY_INTERFACE] => CGI/1.1
[REMOTE_PORT] => 49348
[SCRIPT_FILENAME] => //index.php
[SERVER_ADMIN] => webmaster@localhost
[CONTEXT_DOCUMENT_ROOT] => /userX/home/www
[CONTEXT_PREFIX] =>
[REQUEST_SCHEME] => http
[DOCUMENT_ROOT] => /userX/home/www
[REMOTE_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[SERVER_ADDR] => 127.0.0.1
[SERVER_NAME] => userX.xxxxxx.com
[SERVER_SOFTWARE] => Apache/2.4.43 (Unix) OpenSSL/1.1.1 PHP/7.4.4
[SERVER_SIGNATURE] =>
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[HTTP_ACCEPT] => */*
[HTTP_USER_AGENT] => curl/7.58.0
[HTTP_HOST] => userX.xxxxxx.com
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1587866614.9455
[REQUEST_TIME] => 1587866614
)
Не используйте print_r ($ _ SERVER);, и он не появится в вашем выводе. Это переменная среды, установленная при запуске Apache (= сервера). Вы можете управлять им в сценариях запуска Apache или в конфигурации Apache. Если вы избавитесь от него, не удивляйтесь, если Apache перестанет запускаться.