2013-09-05 25 views
8

phpunit --coverage-html çalıştırırken, saat dilimleri ile ilgili bilinen bir uyarı alıyorum.PHPUnit "Uyarı: date(): Bu güvenli değil ..."

PHP Uyarı: date(): Sistemin saat dilimi ayarlarına güvenmek güvenli değildir. Date.timezone ayarını veya date_default_timezone_set() işlevini kullanmak için gereklidir. Bu yöntemlerinden herhangi birini kullandıysanız ve hala bu uyarıyı alıyorsanız, büyük olasılıkla , saat dilimi tanımlayıcısını yanlış yazdınız. Şimdi için saat dilimini 'UTC' seçtik, ancak saat diliminizi seçmek için lütfen date.timezone ayarını yapınız.

Her şey beklendiği gibi çalışır, ancak gerçekten rahatsız edici olur. Tabii

, benim php.ini değiştirerek bunu çözebilir ama mümkünse bazı sunucu Bilinemezcilik tutmak için, bunu önlemek için tercih ediyorum. Ayrıca, bu uyarıyı test kodum tarafından tetiklenirse görünmesini engellemek istemiyorum.

Varsayılan zaman dilimini yalnızca dahili PHPUnit işlemleri için tanımlamanın bir yolu var mı?

cevap

12

TimeZone'u bootstrap.php dosyasında ayarlıyorum.

<?php 
// PHP and Web server settings 
error_reporting(E_ALL | E_STRICT); 
date_default_timezone_set("America/Toronto");  // Set the default timezone 
$_SERVER['SERVER_NAME'] = 'http://myserver';  // Set Web Server name 

// Process the Include Path to allow the additional application to be set. 
$IncludePaths = explode(PATH_SEPARATOR, get_include_path()); 
$NewIncludePaths = array_merge($IncludePaths, array(dirname(__FILE__))); 
set_include_path(implode(PATH_SEPARATOR, array_unique($NewIncludePaths))); // Update Include Path 

//define('PHPUNIT_RUNNING', 1); // Indicate to the code that Automated Testing is running. 
?> 
+0

Ancak bu şekilde, kodumda * güvenli olmayan * 'date()' varsa, bir uyarı verir mi? – albertedevigo

+0

@simbirsk Artık TimeZone'un PHP'de ayarlandığından emin olmayacağım. Bu ayar, INI dosyasındaki saat dilimini ayarlamayla aynıdır. –

+1

Tam olarak sorun bu, eğer mümkünse, kodum tarafından atılan uyarıları gizlemek istemiyorum. – albertedevigo