gpt4 book ai didi

php - Python ENV 文件被 PHP ENV 覆盖

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:03 27 4
gpt4 key购买 nike

我正在使用 PHP 和 Laravel 框架,我使用 .env 来设置我的环境变量。然后我从我的 PHP 环境调用 python 脚本,并将结果返回给 PHP。我的问题是,在 Python 中设置的默认 os.environ 正在被我的 PHP 环境覆盖。

我的代码(示例):

<?php
//Setting up the laravel environment and loading in the $_ENV variable
exec('python script.py');

然后是我的 python :

print os.environ

print os.environ 将返回我在 PHP 环境设置期间设置的所有环境变量。所有默认环境变量(例如 PATH)都未设置或被新环境覆盖。

我花了一些时间来诊断问题。然而,以我对python的了解有限,如何解决它被证明是有问题的。有没有一种方法可以在不影响 PHP 环境的情况下重新初始化 python 环境,反之亦然?基本上我需要这两个进程在环境方面相互独立,或者我需要设置 python 环境,然后在返回 PHP 之前用旧值更新它。

如果有人知道如何去做,那你就是救命稻草。

最佳答案

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

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

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

对于 PHP,$_ENV 中的更改不应该被子进程继承,只有使用 putenv 显式设置的才应该被子进程继承。

关于php - Python ENV 文件被 PHP ENV 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com