2011-06-22 57 views
7

系統:Debian的萊尼/阿帕奇2.2/php5.3.3來源php5.3.3 date.timezone再次php.ini指令不考慮

我用的php.ini中的date.timezone strugglying編譯。

我可以在php源代碼中定義TZ,但是我想立即在ini文件中解決這個問題。

PHP代碼:好的

date_default_timezone_set('Europe/Berlin'); 

的php.ini:如果沒有考慮到的源代碼

date.timezone = 'Europe/Berlin' 

我也檢查了我修改的權利範圍內不設置php.ini文件,並有一些php.default.ini文件的干擾。
我在apache配置文件中檢查了是否會有干擾的TZ env數據,但沒有。

不知道該怎麼做多,所以任何提示將受到歡迎,提前

THX。

編輯: 我也試過沒有或單引號或雙引號date.timezone ='Europe/Berlin',但我仍然在phpinfo中得到一個「no value」。

EDIT2:兩個phpinfo()函數及以下的測試腳本返回了date.timezone是空的(例如,沒有價值。):

date_default_timezone_set('America/Los_Angeles'); 
$script_tz = date_default_timezone_get(); 
$iniset = ini_get('date.timezone') ; 
if (strcmp($script_tz, $iniset)){ 
    echo "Script timezone ($script_tz) differs from ini-set timezone ($initset)."; 
} else { 
    echo "Script timezone ($script_tz) and ini-set timezone match."; 
} 

EDIT3:哼哼,我想我找到STHG在php.ini中

Configuration File (php.ini) Path : /usr/local/php533/php.ini 
Loaded Configuration File : VOID ! 

所以我必須找到使方式,以確保Apache是​​尋找合適的php.ini莫名其妙...

+0

***注:***了'PHP-cli'的'php.ini'文件是不同的,那麼'apache2'的'php.ini'文件。我建議將符號鏈接到另一個以保持同步並避免混淆! –

回答

2

希望它可以幫助別人在Debian的發行版一樣:

解決:
需要告訴Apache來加載想要PHP。INI文件

上下文:
PHP裝載作爲Apache模塊(例如DSO)

HOW簡稱:
殼ENV

PHP_INI_SCAN_DIR=/pathtophpini 
export PHP_INI_SCAN_DIR 

的http.conf

# ... 
# DSO Modules: PHP as an Apache module 
SetEnv PHPRC /usr/pathtophpini 
SetEnv PHP_INI_SCAN_DIR /usr/pathtophpini 

LoadModule php5_module /pathtophpmod/libphp5.so 
PHPINIDir /pathtophpini 
# ... 

殼牌

/etc/init.d/apache2 restart 

現在只需檢查所裝載的配置文件的php.ini是正確的或者使用PHP-CLI命令行中的phpinfo或():

/path/to/your/phpcli/bin/php -i | grep php.ini | tail -n2 
# which gives you the expected answer 
Configuration File (php.ini) Path => /pathtophpini/php.ini 
Additional .ini files parsed => /pathtophpini/php.ini 

一些更文檔:
就這一點而言,前提是該主題上的文檔非常少,因爲這是apache和php之間的一種共享責任主題:
on stackoverflow
on php manual
askapache

+0

這將是一件很好的事情,對於shell變量,它期望一個目錄,但apache配置需要實際的ini我認爲的路徑。 – redreinard

6

我想你錯過了引號:

date.timezone = "Europe/Berlin" 

值是根據字符串:ini.date.timezone on PHP.net必須用引號引用。

+0

Thx但這不是我的情況。 – hornetbzz

+0

不正確! 'php.ini'指令'date.timezone'需要一個字符串,但引號不是必需的。這與運行時替代不同:'date_default_timezone_set('Europe/Berlin');'(在php代碼中)正確的需要引號。只要設置正確的東西! ;) –