在 Windows 中重置 Apache PATH 环境变量


Reset Apache PATH environment variable in Windows

出于安全性考虑,我最近升级了Apache和PHP,我也使用PHP与Oracle数据库进行通信。新的PHP版本只有php_oci8_12c.dll模块,所以我也安装了Oracle 12c客户端。

启用 oci8 模块后,我注意到当我运行 phpinfo() 时该模块没有显示在 Apache 中,但是如果我运行 php -m,我会在那里找到 oci8 模块。进一步检查显示,自升级以来,PATH 环境变量尚未更新,并且新路径仅追加在 PATH 变量的末尾。

我粘贴在 Apache 的(精简的)PATH 数据下面:

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

与系统 PATH 变量相比:

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 HOME 文件夹,则会检测到 oci8 模块并将其加载到 Apache 中。

我已经在互联网上搜索了"重置"Apache PATH变量,但无济于事,因此我将其发布在这里。请帮忙。

我能想到两个可能的原因:

  1. 12c 客户端的路径是用户变量,而不是系统变量(但我希望它位于路径列表的末尾)
  2. 12c 客户端安装程序已直接修改注册表以添加路径,因此系统环境尚未识别更改。(如果您将 Apache 作为服务运行,那么仅仅因为您的帐户可以看到路径更改并不意味着SYSTEM帐户可以看到更改。

假设后一种情况,服务器重新启动将解决问题。如果无法重新启动服务器,则可以尝试停止Apache,打开"环境变量"对话框,然后只需按OK(在此对话框和所有父对话框中)即可"重新初始化"系统环境。 再次启动Apache,它应该会选择新的设置。


在相关说明中:您应该将捆绑的 OCI 驱动程序 (1.4.10) 替换为 PECL 的最新版本(当前为 2.0.8)。 如PECL描述中所述:

使用 PHP 4.3.9 时,请使用较旧的 PHP OCI8 1.4.10 到 PHP 5.1.x,或者只有 Oracle 数据库 9.2 客户端 图书馆可用。

Windows 下载包含 php_oci8.dllphp_oci8_11g.dllphp_oci8_12c.dll 。 因此,您无需尝试更改 Oracle 客户端安装。