2011-01-12 57 views
3

我有一個PHP腳本,我想通過cron運行。它應該加載不同的配置信息,具體取決於腳本是否在我的本地服務器,QA服務器或生產服務器上運行。問題是,當腳本通過cron運行時,它沒有任何標識的$ _SERVER信息用於確定腳本運行在哪個環境。使用CRON運行PHP腳本時獲取標識服務器信息

我能想到的唯一的事情就是讓cron作業本身給腳本附加一個參數,但我希望有一種更好的方式,我不需要那樣做。當從cron運行腳本時,有沒有其他方法可以確定腳本駐留在哪個服務器上?

感謝。

+0

服務器有什麼不同?檢查IP地址,檢查是否存在路徑,文件的內容... – Konerak 2011-01-12 19:44:41

+0

`gethostname()`? – 2011-01-12 19:45:22

+0

不能使用gethostname(),因爲我在PHP 5.2上。而且我不知道如何在沒有$ _SERVER變量的情況下獲取IP地址。否則,服務器將使用相同的代碼進行設置,因此我可以執行諸如檢查路徑等操作,但我必須手動插入它。 – SenorPuerco 2011-01-12 19:48:43

回答

3

我解決了下一個問題:傳遞給腳本環境變量。

在.htaccess/httpd.conf文件的情況下: SetEnv SITE_NAME x1

在cron的情況下(運行腳本):

#!/bin/bash 
export SITE_NAME=x1; 
php /path 

在這兩種情況下,PHP代碼得到這個環境變量是: getenv('SITE_NAME');

x1 - 是一個示例站點名稱。

0

GETENV(「計算機名」)將返回其上運行的計算機名稱...

但是,如果你的腳本只在生產測試不同的事情,你怎麼知道這是正確的生產?