2010-07-30 22 views
16

trên máy chủ tôi có php 5.3.2 và cakephp 1.3.Múi giờ và các vấn đề khác với Cakephp 1.3 và PHP 5.3.2

khi tôi chạy ứng dụng CakePHP, nó mang lại cho tôi lỗi sau đây:

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]

Ngoài ra, tôi nhận được một số errros hơn:

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

múi giờ trong php.ini được định nghĩa là Châu Âu/London

Tôi luôn nhận được lỗi đó, mặc dù tôi xác định hoặc không date_default_timezone_set('UTC') hoặc Châu Âu/Luân Đôn hoặc bất cứ điều gì ...

.210

thực sự bực bội ......... xin vui lòng giúp đỡ ...

UPDATE: cái gì là sai với cài đặt của tôi về php ... nếu tôi chạy

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

... nó cho tôi màn hình trống. không có kết quả ...

có thể có sự cố không?

+0

Bạn đã thử khai báo múi giờ trong mã của mình chưa? Có lẽ trong appFcontroller của bạn beforeFilter()? –

+0

trông giống như tôi có một số vấn đề với cài đặt php ... xin vui lòng, hãy xem một phần cập nhật của câu hỏi của tôi. – user198003

+0

*** Lưu ý: *** Tệp 'php.ini' của' php-cli' khác với tệp 'php.ini' của' apache2'. Tôi đề nghị tượng trưng liên kết với nhau để giữ cho chúng được đồng bộ và tránh nhầm lẫn! –

Trả lời

26

Để xử lý cảnh báo đầu tiên, bạn cần phải bỏ ghi chú dòng date_default_timezone_set('UTC'); trong /app/config/core.php. Bạn có thể thay thế UTC bằng múi giờ của mình như Leo đã đề xuất.

+0

thật không may, tôi đã làm điều đó trước khi tôi đăng câu hỏi này ... cũng tôi đã thử một số múi giờ khác nhau, và nhận được lỗi tương tự mỗi lần. Ngoài ra, xin vui lòng kiểm tra phần CẬP NHẬT một phần của câu hỏi của tôi ... vì một lý do nào đó, tôi không thể thực hiện ngày tháng chức năng php đơn giản. tôi nghĩ rằng có thể có một vấn đề, một cái gì đó tôi đã không được kích hoạt, hoặc cài đặt, hoặc ...? – user198003

+0

Thay đổi tệp của bạn thành ' '. – bancer

+0

tôi đã đặt error_reporting (E_ALL) và các lỗi tôi nhận được là: Cảnh báo: ngày(): Không an toàn để dựa vào cài đặt múi giờ của hệ thống. Bạn được * yêu cầu * để sử dụng cài đặt date.timezone hoặc hàm date_default_timezone_set(). Trong trường hợp bạn sử dụng bất kỳ phương pháp nào trong số những phương pháp đó và bạn vẫn nhận được cảnh báo này, rất có thể bạn đã viết sai chính tả định danh múi giờ. Chúng tôi đã chọn 'Châu Âu/Berlin' cho 'CEST/2.0/DST' thay vì trong /htdocs/index.php trên dòng 9 Lỗi nghiêm trọng: date(): Cơ sở dữ liệu múi giờ bị hỏng - điều này sẽ * không bao giờ * xảy ra! trong /htdocs/index.php trên dòng 9 – user198003

4

Tôi gặp vấn đề tương tự và Googling dẫn tôi đến bài đăng này.

tôi khắc phục vấn đề bằng cách thêm dòng date_default_timezone_set("America/Anchorage"); lên đỉnh [thư mục cơ sở bánh] /libs/cache.php

Bạn có thể muốn thay thế Mỹ/Anchorage với múi giờ của bạn.

+0

+1 tính năng này hoạt động với tôi –

7

Như Leo Said, là một vấn đề với PHP 5.3. Giải pháp tốt nhất là thay đổi máy chủ php.ini web của bạn và thiết lập

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

Hoặc nếu bạn không thể sửa đổi máy chủ web php.ini bạn có thể thêm tùy chọn này để nhổ tận gốc tập tin .htaccess trên trang web của bạn:

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

Các múi giờ được hỗ trợ khác tại đây: http://php.net/manual/en/timezones.php – geon

2

Tôi đã gặp lỗi này trong một thời gian kể từ khi đồng lưu trữ. nâng cấp lên 5.3 quá

Trong /app/config/config.php, xung quanh dòng 244, có một lưu ý về un-cho ý kiến ​​dòng tiếp theo khi chạy trên 5.3

Tôi chỉ thay đổi dòng bên cạnh:

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) 

bạn có thể đặt dòng đó trong bootstrap.php, nhưng bạn có thể nhận được lỗi này vẫn còn, config.php được nạp đầu tiên

0

tôi chạy vào này khi sử dụng cakeshell để chạy lệnh script dòng cron. Sau nhiều rắc rối tôi đã tìm ra rằng ngoài giải pháp của bancer ở trên tôi cần lõi nhập khẩu.php vào các kịch bản lệnh php của tôi như vậy:

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

    //run controllers and actions that cause error here 

} 

Thêm 'Core' to App :: import() đã giải quyết nó cho tôi.

Các vấn đề liên quan