2010-07-30 13 views
16

auf dem Server habe ich PHP 5.3.2 und CakePHP 1.3.Zeitzone und mehr Probleme mit CakePHP 1.3 und PHP 5.3.2

wenn ich CakePHP Anwendung ausführen, es gibt mir folgende Fehler:

Warning (2): strtotime() [ http://php.net/function.strtotime] : It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead [ROOT/cakephp/cake/libs/cache.php, line 570]

Auch ich bin immer ein paar weiteren Fehlern durchsuchen:

Notice: Trying to get property of non-object in /htdocs/cakephp/cake/libs/cache/file.php on line 248 Fatal error: Call to a member function cd() on a non-object in /htdocs/cakephp/cake/libs/cache/file.php on line 248

Zeitzone in der php.ini wie Europa definiert ist/London

Ich bekomme immer diesen Fehler, obwohl ich definiere oder nicht date_default_timezone_set('UTC'), oder Europa/London, oder was auch immer ...

wirklich frustrierend ......... bitte helfen ...

UPDATE: etwas mit meiner Installation von PHP falsch ist ... wenn ich

<?php echo date('Y'); ?> 

laufen ... es gibt mir einen leeren Bildschirm. kein Ergebnis ...

Gibt es vielleicht ein Problem?

+0

Haben Sie versucht, die Zeitzone in Ihrem Code zu deklarieren? Vielleicht in Ihrem app_controller vorFilter()? –

+0

sieht aus, als hätte ich ein Problem mit der Installation von PHP ... bitte, schau dir den aktualisierten Teil meiner Frage an. – user198003

+0

*** Anmerkung: *** Die 'php.ini' Datei des' php-cli's ist anders als 'apache2'' 'php.ini' Datei. Ich schlage vor, symbolisch miteinander zu verknüpfen, um sie synchron zu halten und Verwirrung zu vermeiden! –

Antwort

26

Um die erste Warnung zu behandeln, müssen Sie die Zeile date_default_timezone_set('UTC'); in /app/config/core.php auskommentieren. Sie können UTC durch Ihre Zeitzone ersetzen, wie Leo vorgeschlagen hat.

+0

leider habe ich das gemacht, bevor ich diese Frage poste ... auch habe ich mehrere verschiedene Zeitzonen ausprobiert, und bekomme jedes Mal denselben Fehler. auch, bitte überprüfen Sie UPDATED Teil meiner Frage ... aus irgendeinem Grund kann ich nicht einfach php Funktion Datum ausführen. Ich denke, dass es ein Problem geben könnte, etwas, das ich nicht aktiviert oder installiert habe, oder ...? – user198003

+0

Ändern Sie Ihre Datei in ' '. – bancer

+0

Ich habe error_reporting (E_ALL) gesetzt, und Fehler, die ich bekomme sind: Warnung: date(): Es ist nicht sicher, sich auf die Zeitzone Einstellungen des Systems zu verlassen. Sie müssen * die * date.timezone-Einstellung oder die date_default_timezone_set() -Funktion verwenden. Falls Sie eine dieser Methoden verwendet haben und Sie immer noch diese Warnung erhalten, haben Sie höchstwahrscheinlich die Zeitzonen-ID falsch geschrieben. Wir haben 'Europe/Berlin' für 'CEST/2.0/DST' gewählt und stattdessen in /htdocs/index.php in Zeile 9. Fataler Fehler: date(): Zeitzonen-Datenbank ist korrupt - das sollte * niemals * passieren! in /htdocs/index.php on line 9 – user198003

4

Ich hatte genau das gleiche Problem und Googling führte mich zu diesem Post.

fixiert ich das Problem, indem Sie die Zeile date_default_timezone_set("America/Anchorage"); Zugabe an die Spitze der [Kuchen Basisverzeichnis] ​​/libs/cache.php

Sie wollen wahrscheinlich America/Anchorage mit Ihrer Zeitzone ersetzen.

+0

+1 das funktionierte für mich –

7

Wie Leo Said, ist ein Problem mit PHP 5.3. Die beste Lösung ist Ihr Webserver php.ini zu ändern und

[Date] 
; Defines the default timezone used by the date functions 
; http://php.net/date.timezone 
date.timezone = "Europe/Rome" 

gesetzt Oder wenn Sie nicht Web-Server php.ini ändern können Sie diese Optionen hinzufügen können .htaccess-Datei auf Ihrer Website zu verankern:

php_flag date.timezone = "Europe/Rome" 
+3

Weitere unterstützte Zeitzonen hier: http://php.net/manual/en/timezones.php – geon

2

Ich hatte diesen Fehler seit einer Weile seit dem Hosting co. Auch ein Upgrade auf 5.3

Im /app/config/config.php, um die Linie 244, gibt es eine Notiz für un-Kommentierung der nächsten Zeile, wenn sie auf 5,3

läuft Ich habe gerade die nächste Zeile zu:

date_default_timezone_set('America/Toronto'); // your favourite time-zone here - and don't get me started about why Toronto is U.S. city (joking) 

Sie könnten diese Zeile in bootstrap.php setzen, aber man könnte diesen Fehler noch erhalten, config.php erste

0

ich in diese lief geladen wird, wenn cakeshell mit Kommandozeilen-cron-Skripte ausführen. Nach langem Ärger fand ich heraus, dass ich zusätzlich zu Bancers Lösung einen Importkern brauchte.php in meinem PHP-Shell-Skripten als solche:

function main() { 
    App::import('Controller', 'Core'); 

    //run controllers and actions that cause error here 

} 

Hinzufügen 'Core' zu App :: import() gelöst es für mich.