2013-07-05 26 views
0

在我的web應用程序,我有以下常數:PHP不斷CLI/CGI

//set global path if not yet set 
if(!defined('FILE_ROOT_PATH')){ 
    define('FILE_ROOT_PATH', $_SERVER['DOCUMENT_ROOT']); 
} 

因此代碼是可移植的,我可以包括/使用絕對路徑需要。

現在有一些PHP文件必須可以從CLI和CGI執行,當然$ _SERVER不能從CLI獲得。

所以我所做的就是將其更改爲這個代碼在與CLI和CGI執行這些特殊文件:

//set global path if not yet set and set it via dirname for CLI 
if(!defined('FILE_ROOT_PATH') && strlen($_SERVER['DOCUMENT_ROOT'])){ 
    define('FILE_ROOT_PATH', $_SERVER['DOCUMENT_ROOT']); 
}else{ 
    define('FILE_ROOT_PATH', dirname(dirname(__FILE__))); 
} 

所以CGI將執行第一個「定義」和CLI第二。

這樣做是否安全?當在CLI上執行時,常量不會被「覆蓋」爲CGI,對吧?謝謝你的想法。

回答

1

該常量僅在腳本的生命週期中存在。 Web實例和控制檯實例不會跨越路徑,因爲它們在不同的進程中運行。完成你的工作是完美的保存。

+0

謝謝!不幸的是,另一部分不起作用,我會在上面追加...... –

+0

好的,它的工作原理。謝謝。 –