Сбросить переменную среды Apache PATH в Windows


Я недавно обновил Apache и PHP из-за безопасности, а также использую PHP для связи с базами данных Oracle. Новая версия PHP имеет только php_oci8_12c.dll модуль, поэтому я также установил клиент Oracle 12c.

После включения модуля oci8 я заметил, что модуль не отображается в Apache при запуске phpinfo(), но если я запускаю php-m, я нахожу модуль oci8 там. Дальнейшая проверка показала, что переменная среды PATH не обновлялась с момента обновления и что новая путь добавляется только в конце переменной PATH.

Я вставляю ниже (урезанные) данные ПУТИ из Apache:

C:\oracle\client11gR2_32\bin;C:\www\Apache24\bin;C:\www\php548;C:\database\mysql5528\bin;C:\oracle12c\client12c_32\bin;C:\www\php562;C:\www\php562\ext

По сравнению с системной переменной ПУТИ:

C:\oracle12c\client12c_32\bin;C:\oracle\client11gR2_32\bin;C:\www\Apache24\bin;C:\www\php562;C:\www\php562\ext;C:\database\mysql5528\bin

Я попытался перезапустить службу Apache, а также удалить/переустановить, но ничего не работает. Похоже, что данные каким-то образом "кэшируются" в отдельном месте, но я не могу сказать, где. Если я переименовал ДОМАШНЮЮ папку клиента Oracle 11g, то модуль oci8 будет обнаружен и загружен в Apache.

Я искал по всему Интернету "сброс" переменной ПУТИ Apache, но безрезультатно, поэтому я публикую ее здесь. Пожалуйста, помогите.

Author: gpm1982, 2014-11-14

1 answers

Я могу придумать две возможные причины:

  1. Путь к клиенту 12c - это пользовательская переменная, а не системная переменная (но тогда я ожидал бы, что она будет в конце списка путей)
  2. Установщик клиента 12c напрямую изменил реестр, чтобы добавить путь, и поэтому системная среда еще не распознала это изменение. (Если вы используете Apache в качестве службы, то только потому, что ваша учетная запись может видеть изменение пути, не означает, что учетная запись SYSTEM может смотрите изменение.)

Предполагая, что в последнем случае перезагрузка сервера устранит проблему. Если вы не можете перезагрузить сервер, вы можете попробовать остановить Apache, открыть диалоговое окно Переменные среды и просто нажать OK (в этом и во всех родительских диалоговых окнах), чтобы "повторно инициализировать" системную среду. Запустите Apache снова, и он должен выбрать новую настройку.


В связи с этим: Вам действительно следует заменить прилагаемый драйвер OCI (1.4.10) на самую последнюю сборку из PECL (в настоящее время 2.0.8). Как указано в описании PECL:

Используйте более старый PHP OCI8 1.4.10 при использовании PHP 4.3.9 до PHP 5.1.x, или когда только клиент Oracle Database 9.2 доступны библиотеки.

Загрузка Windows содержит php_oci8.dll, php_oci8_11g.dll, и php_oci8_12c.dll. Таким образом, вам не нужно было бы пытаться изменить установку клиента Oracle.

 0
Author: timclutton, 2014-11-16 14:15:10