2017-05-09 124 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啓動的子進程。