2012-04-25 39 views
5

Tôi vừa mới có một máy tính mới và tôi đã thiết lập PHP/MySQL/cơ sở dữ liệu, v.v ... Tôi nghĩ tôi sắp sửa ở đó , ngoại trừ nó ném quả cầu này. Kịch bản đăng nhập của tôi đã hoạt động tốt, nhưng bây giờ nó khạc nhổ cảnh báo sau (điều này làm rối tung JSON).PHP - date() so với date.timezone/date_default_timezone_set()

Warning: ngày() [function.date]: Nó không phải là an toàn dựa trên các thiết lập múi giờ của hệ thống. Bạn đang 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 thức 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ể là đã viết sai chính tả định danh múi giờ. Chúng tôi chọn 'Nam Cực/Macquarie' cho 'EST/10,0/no DST' thay vì trong .../php/login.php trên dòng

Mã của tôi rõ ràng là sử dụng date() và là làm việc trong phiên bản trực tiếp và trên máy cũ. Tôi nhận được hai cảnh báo cho hai dòng mã sau đây:

$date = date("ymd"); 

$this_year = date("y"); 

Nghiên cứu của tôi (xem here) gợi ý rằng hành vi của các chức năng này phụ thuộc vào php.ini.

Vì vậy, tôi nên thay đổi php.ini trên máy mới, hoặc tôi đang sử dụng một số loại phương pháp không dùng nữa, và tôi có nên mương date() hoàn toàn không?

Cảm ơn.

+1

Xin cảm ơn, tất cả. Sử dụng date_default_timezone_set ('...') làm việc như một sự quyến rũ. – Nick

Trả lời

11

Bạn không cần thay đổi tệp php.ini nếu bạn sử dụng date_default_timezone_set(). Chỉ cần đặt nó vào múi giờ bạn sẽ được làm việc trong

Something như thế này nên đi trong một tập tin cấu hình hoặc trên trang nơi bạn đang làm việc với các ngày (nếu nó chỉ là một trang):.

date_default_timezone_set('America/Los_Angeles'); 
4

Nó không phải là một ngoại lệ, đó là một cảnh báo có thể xuất hiện ngay bây giờ vì cài đặt báo cáo lỗi của bạn trên máy mới khác với cài đặt cũ.

Tôi khuyên bạn nên làm theo đề xuất trong cảnh báo và sử dụng date_default_timezone_set() để đặt múi giờ trong tập lệnh mà bạn cần.

+1

Tôi đã cập nhật bài đăng, thay đổi 'ngoại lệ' thành 'cảnh báo' :) – Nick

4

Trước tiên, bạn có thể biết, điều này giải quyết được vấn đề.

date_default_timezone_set('Your/Timezone'); 

Nếu bạn muốn cấu hình trong php.ini, sửa đổi dưới đây

[Date] 
; ... 
; ... 
date.timezone = Your/Timezone 
4

Bạn không cần phải thay đổi php.ini.

Tuy nhiên, nếu bạn có múi giờ mà bạn sẽ sử dụng cho hầu hết các tệp php của bạn, hãy thêm dòng sau vào php.ini của bạn nên thực hiện thủ thuật.

date.timezone = "Your/Timezone" 

Trong trường hợp của tôi, tôi đã thêm dòng sau vào php.ini. Cá nhân, tôi thích giữ tất cả các máy chủ của chúng tôi theo múi giờ UTC.

date.timezone = "UTC" 
Các vấn đề liên quan