Где установить переменные среды PHP? [Дубликат]

Я потратил приличное время, пытаясь решить эту проблему. Я думал, что я как-то неправильно установил свой путь к классу, но проблема заключалась в том, что я набрал:

java -cp C:/java/MyClasses C:/java/MyClasses/utilities/myapp/Cool  

вместо:

java -cp C:/java/MyClasses utilities/myapp/Cool   

Я думал, что значение полностью квалифицированного означает укажите полное имя пути вместо полного имени пакета.

34
задан Bruno Cloutier 9 July 2013 в 15:00
поделиться

2 ответа

Предполагая, что ваша конфигурация имеет AllowOverrides с .htaccess, вы должны включить mod_env в Apache, чтобы это работало.

Apache - mod_env

26
ответ дан Jacob S 27 August 2018 в 06:35
поделиться

Apache Docs custom-error.html охватывает переменные среды, переданные на страницы обработки ошибок

Говорит: переменные среды REDIRECT_ создаются из переменных среды, существовавших до перенаправления. Они переименовываются с префиксом REDIRECT_ , т. е. HTTP_USER_AGENT становится REDIRECT_HTTP_USER_AGENT. »

Говорит« Ни одно из них не будет установлено, если целью ErrorDocument является внешнее перенаправление (что-либо, начиная с имени схемы, такого как http :, даже если оно ссылается на том же хосте, что и сервер).

Говорит о SetEnv: «Внутренние переменные среды, заданные этой директивой, устанавливаются после запуска большинства ранних директив обработки запросов, таких как управление доступом и URI-to- filename mapping. Если переменная среды, которую вы устанавливаете, подразумевается как вход в этот ранний этап обработки, такой как директива RewriteRule, вместо этого вы должны установить переменную окружения SetEnvIf. "

На некоторых серверах пользовательские переменные среды должны начинаться с «HTTP_» для целей безопасности, например: SetEnv HTTP_MY_VARIABLE "my value"

Вот некоторые способы настройки и использования сервера .htaccess переменные, взятые из моего изменения скоропортящегося пресса 5G Blacklist / Firewall http://perishablepress.com/5g-blacklist-2013/ для использования отчетов об изменениях среды:

SetEnv myServerName %{SERVER_NAME}

RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig|open_basedir) [NC,OR]
RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR]
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC]
RewriteRule .* - [E=badQueryString:%0--%1--%2,F,L]

SetEnvIfNoCase User-Agent ^$ noUserAgent
SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) badUserAgent=$1

<limit GET POST PUT>
  Order Allow,Deny
  Allow from all
  Deny from env=badUserAgent
</limit>

Обратите внимание на использование параметров, например $ 0 -% 1 -% 2. % 0 дает полную строку,% 1 дает совпадение с 1-м заключенным в скобки выражением,% 2 - вторым. Дефис являются буквальными символами отображения, чтобы визуально отделять результаты параметров (не думайте, что это какой-либо способ разместить пробелы там).


Вот некоторые методы PHP для доступа к переменным среды (в моем дело от 403.php и 404.php). Обратите внимание, что вы не смотрите в phpinfo (), а в $ SERVER и что ваши переменные получают префикс REDIRECT . Также обратите внимание, что при перенаправлении 403/404 QUERY_STRING становится REDIRECT_QUERY_STRING. Это материал, который может быть легко зависит от сервера, поэтому проверьте $ _SERVER на свои фактические значения. Например,

if (getenv("HTTP_REFERER") !== FALSE) {
    $httpref = getenv("HTTP_REFERER");
} else {
    $httpref = '';
}
if (isset($_SERVER['REDIRECT_STATUS'])) {
    $status = $_SERVER['REDIRECT_STATUS'];
} else {
    $status = '';
}
if (isset($_SERVER['REMOTE_HOST'])) {
    $remoteHost = $_SERVER['REMOTE_HOST'];
} else {
    $remoteHost = '';
}

if (isset($_SERVER['REDIRECT_QUERY_STRING'])) {
    $querystring = $_SERVER['REDIRECT_QUERY_STRING'];
} else {
    $querystring = '';
}

if (isset($_SERVER['REDIRECT_noUserAgent']) ) {
    $htaccessErrors[] = 'NoUserAgent';
}
if (getenv("REDIRECT_badQueryString") !== FALSE) {
/* must exactly match what shows up in $_SERVER, is case sensitive (e.g. badQueryString not BadQueryString) */
    $htaccessErrors[] = 'badQueryString:'.getenv("REDIRECT_badQueryString");
}

я немного поместил в http://lcblog.lernerconsult.com/2013-server-alert-you-file-not-found-errors/

6
ответ дан George Lerner 27 August 2018 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: