2017-05-09 155 views
0

而我在httpd.conf(Apache)的SETENV = PROD
定义并在PHP来电ENV(使用的getenv()函数)GETENV从终端运行PHP脚本

从终端(MAC)运行的同时返回null php file.php env为NULL
但是当我从网页上运行它的工作时;并打印“prod”

+2

apache是​​一个sapi,cli是完全不同的一个。 – hassan

+0

另外很可能你有一个用于Apache的'php.ini',另一个用于PHP CLI – RiggsFolly

+0

因此,当您以完全绕过Web服务器的方式执行PHP脚本时,您在Web服务器级别配置的内容不起作用(命令线) - 这应该不是一个惊喜。 – CBroe

回答

0

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

你可以把env=prod在命令行前设置环境变量env与价值prod仅适用于命令行的当前执行:

$ env=prod php -f script.php 

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

$ export env=prod 
$ php -f script.php 

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