проблема при изменении переменной окружения в PHP


Установил php через xampp, и мне нужно изменить эту переменную:

inserir a descrição da imagem aqui

NSL_LANG.

я Создал файл php с помощью этого кода:

<?php 

putenv("NLS_LANG=BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252") or die("Falha ao inserir a variavel de ambiente");

phpinfo();

?>

, Но когда я открываю эту страницу он показывает, как на изображении.

Мне нужно изменить эту переменную среды для этой функции. - Кто знает, как сделать это?

Author: Julio Henrique, 2018-01-26

1 answers

Я Думаю, что по времени выполнения, это не будет работать, это потому, что при запуске putenv Oracle клиент уже работает, и если я не ошибаюсь, связи PHP с Oracle клиент-это "параллельный", и не в том же "контексте", то есть использовать putenv не будет влиять на процесс клиента oracle.

То, что вы можете сделать, это вручную добавить в windows, сделайте это:

Компьютер > Свойства > дополнительные Параметры система

Появится окно, похожее на это:

propriedades do sistema

Затем нажмите новости переменные среды, а затем Новый..., а не

nova variavel de ambiente

, Если использовать клиент oracle на несколько пользователей используйте variaveis de sistema (предпочтительнее), если использовать только на текущего пользователя, и вы действительно хотите ограничить это, затем выберите "новый", "новости переменные пользователя ".

В поле " имя переменную добавьте NLS_LANG В поле значение переменной добавить BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252

После этого может потребоваться ВЫЙТИ из системы или даже перезагрузить Windows.


, Используя Apache и PHP

Обратите Внимание, что применять NLS_LANG=BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252 будет влиять только клиент oracle, это не повлияет на Api-интерфейсы на базе PHP или Apache, поскольку charset apache так же, как и вход, который поставляется forms или даже как он спас сценарии .php могут быть в одной кодировки в другую.

BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252 аналог windows-1252, которая эквивалентна iso-8859-1, и, как я объяснил в этом ответе https://pt.stackoverflow.com/a/43205/3635, вы должны использовать:

  • PHP скрипты, сохраненные в "iso-8859-1" (или windows-1252 и ANSI)
  • Желательно установить с помощью PHP header('Content-type: text/html; charset=iso-8859-1');

Сначала необходимо сохранить", все сценарии .php" iso-8859-1 (или ANSI) и документы .html (если есть):

  • Сохранить, с помощью notepad++:

    salvando documento em ANSI com notepad++

  • Сохранить, с помощью SublimeText:

    salvando documento em iso-8859-1 ou windows 1252

Примечание: я считаю, что не требуется установить oci_connect charset, поскольку оно уже предполагает, что кодировка определяется NSLANG, но разве он не работает попробуйте так:

$db = ocilogon($user, $pass, $connectString, 'WE8MSWIN1252');
 1
Author: Guilherme Nascimento, 2018-01-26 19:38:16