运行php脚本时,getenv从终端返回null

运行php脚本时,getenv从终端返回null,php,apache,Php,Apache,我在httpd.conf(Apache)setEnv=prod中定义了 并在php中调用ENV(使用getenv()函数) 从终端(mac)php file.php运行时,env为NULL 但是,当我从网页上运行它时,它会工作;和打印“prod”在macOS和Linux中,有几种方法可以设置在控制台(终端)中运行的程序的环境。(Windows上的过程类似,但语法不同。) 您可以将env=prod放在命令行前面,以设置环境变量env的值prod,仅用于该命令行的当前执行: $ env=prod p

我在httpd.conf(Apache)setEnv=prod中定义了 并在php中调用ENV(使用getenv()函数)

从终端(mac)php file.php运行时,env为NULL

但是,当我从网页上运行它时,它会工作;和打印“prod”

在macOS和Linux中,有几种方法可以设置在控制台(终端)中运行的程序的环境。(Windows上的过程类似,但语法不同。)

您可以将
env=prod
放在命令行前面,以设置环境变量
env
的值
prod
,仅用于该命令行的当前执行:

$ env=prod php -f script.php
您可以使用
export env=prod
作为单独的命令行。它使用值
prod
为您正在控制台中运行的shell的当前执行设置环境值
env
。它前面的
export
关键字告诉shell将变量传递给它从现在开始启动的所有进程(直到您关闭shell或取消设置变量):


如果要永久设置变量,请将行
export env=prod
放入
~/.profile
~/.bashrc
或首选shell的初始化脚本(如果不是
bash
)。您启动的shell的所有后续实例都会执行初始化脚本,并在其环境中使用值
prod
设置
env
变量,并将其标记为可导出到shell启动的子进程。

apache是一个sapi,cli与之完全不同。而且很可能您有一个用于Apache的
php.ini
,另一个用于php cli。因此,当您以完全绕过web服务器(命令行)的方式执行php脚本时,您在web服务器级别配置的某些内容没有任何效果-这并不奇怪。从终端应用程序运行PHP时不涉及web服务器,反之亦然。它们在不同的环境中运行(很可能是由不同的用户运行)。@axiac-ohh,那么它是如何实现的呢?:)
$ export env=prod
$ php -f script.php