PHP ENV覆盖Python ENV文件

时间:2015-04-22 15:56:54

标签: php python shell environment-variables

我正在使用PHP和Laravel框架,我使用.env来设置我的环境变量。然后我从PHP环境中调用python脚本,并将结果返回给PHP。我的问题是,我的PHP环境正在覆盖Python中的默认<?php //Setting up the laravel environment and loading in the $_ENV variable exec('python script.py'); 设置。

我的代码(示例):

print os.environ

然后是我的python:

print os.environ

\d+(?=\/\?|$) 将返回在PHP环境设置期间设置的所有环境变量。所有默认环境变量(例如PATH)都未被新环境设置或覆盖。

我花了一段时间来诊断问题。但是,由于我对python的了解有限,如何解决它是一个问题。有没有办法在不影响PHP环境的情况下重新初始化python环境,反之亦然?基本上我需要两个进程在环境方面彼此分离,或者我需要设置python环境,然后在返回PHP之前用旧值更新它。

如果有人知道如何解决这个问题,你就会成为救星。

1 个答案:

答案 0 :(得分:3)

子进程在启动时从其父进程继承环境变量。子进程的环境中的任何更改都不会传播到父进程。

在您的情况下,python脚本是子进程;它从php脚本继承了环境;现在您可以自由地对os.environ进行任何更改,这些更改根本不会影响php进程,例如在PATH环境变量的开头添加新路径

os.environ['PATH'] = '/home/foo/bar/bin:' + os.environ['PATH']

对于PHP,$_ENV中的更改不应由子进程继承,只有明确设置为putenv的更改才应由子进程继承。