2010-02-06 62 views
64

Đây là một cài đặt kỳ lạ. Tôi chỉ nâng cấp lên php 5.3.0 và kể từ khi nâng cấp tôi nhận được cảnh báo sau đây:Cấu hình PHP: Không an toàn để dựa vào cài đặt múi giờ của hệ thống

Cảnh báo: getdate() [function.getdate]: Nó không phải là an toàn để dựa vào múi giờ của hệ thống cài đặt. Bạn đang yêu cầu để sử dụng cài đặt ngày giờ. 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ố các phương pháp đó và bạn vẫn đang nhận 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 'Mỹ/Chicago' cho 'CST/-6,0/no DST'

Sau khi tìm kiếm trên các diễn đàn khác nhau, tất cả mọi người nói rằng để giải quyết vấn đề, tất cả các bạn phải làm là chỉnh sửa vùng ngày trong php.ini và khởi động lại Apache.

Nó không hoạt động đối với tôi.

tôi đã cố gắng

date.timezone="America/New_York" 

date.timezone=America/New_York 

date.timezone="US/Central" 

: Khởi động lại apache sau khi tôi thực hiện thay đổi.

Vì tôi vẫn còn có những phiên bản cũ của php cài đặt, tôi thậm chí đã chắc chắn rằng tôi đang chỉnh sửa php.ini rằng phiên bản hiện tại của php sử dụng vào thời điểm đó để tải

/usr/local/php5/lib/php.ini

Tuy nhận được cảnh báo.

Mọi đề xuất?

Cảm ơn bạn đã dành thời gian.

+7

Bạn có đang chỉnh sửa tệp ini chính xác không? – rrrfusco

+3

Tôi thấy điều này là một vấn đề mà múi giờ đã được đặt trong php.ini apache nhưng không phải là php.ini cli. – Kzqai

+0

Múi giờ phải là múi giờ thực, UTC hoặc GMT sẽ không hoạt động. –

Trả lời

2

Kiểm tra lỗi cú pháp trong file php.ini, đặc biệt trước paramaters ngày, ngăn chặn các tập tin từ đang được phân tích một cách chính xác.

7

Tôi tình cờ phải thiết lập Apache & PHP trên hai máy tính xách tay gần đây. Sau nhiều lần khóc lóc và nghiến răng, tôi nhận thấy trong đầu ra của phpinfo (vì lý do nào đó: không chú ý trong khi cài đặt PHP, trình cài đặt kém) Apache dự kiến ​​php.ini sẽ ở đâu đó.

Hai lựa chọn:

  1. đặt nó nơi Apache nghĩ rằng nó nên hay
  2. điểm Apache tại vị trí thực sự của php.ini của bạn

... và khởi động lại Apache. Cài đặt múi giờ sẽ được nhận ra tại thời điểm đó.

37

Tchalvak, người đã nhận xét về câu hỏi ban đầu, đánh vào đầu tôi.Tôi đã chỉnh sửa (tôi sử dụng Debian):

/etc/php5/apache2/php.ini 

... trong đó có các múi giờ chính xác cho tôi và là file .ini chỉ được nạp với date.timezone bên trong nó, nhưng tôi đã nhận được ở trên lỗi khi tôi chạy một tập lệnh thông qua Bash. Tôi không biết rằng mình nên chỉnh sửa:

/etc/php5/cli/php.ini 

. (À, đối với tôi nó là 'tốt', với bạn nó có lẽ khác hẳn, nhưng tôi sẽ giữ cho các phiên bản php.ini của Apache và CLI của tôi được đồng bộ hóa ngay bây giờ).

+1

+1 OMG, bạn là một vị cứu tinh !!!!!!!!!!! Tôi tượng trưng liên kết tập tin CLI với tập tin apache ini. Không còn sự nhầm lẫn này nữa! –

+0

Không có vấn đề gì! Liên kết có thể là kế hoạch tốt nhất để trung thực. Rất vui khi được giúp đỡ. :) – Vaughany

-10

bạn cũng có thể thử này

date.timezone = <?php date('Y'); ?> 
2

hãy sửa đổi index.php của bạn như sau:

require_once($yii); 
$app = Yii::createWebApplication($config); 
Yii::app()->setTimeZone('UTC'); 
$app->run(); 
+0

Mặc dù câu trả lời của bạn có thể giải quyết vấn đề, đưa ra một nhận xét nhỏ về cách hoạt động của nó sẽ không gây hại và sẽ làm cho OP hiểu rõ hơn bạn đang làm gì. – nKn

+0

Trong mã autogenerated yii tạo ra ứng dụng với các thông tin được đưa ra trong tập tin cấu hình. Trong trường hợp này ở cấp ứng dụng, chúng tôi đang thiết lập múi giờ. Vì vậy, chúng ta cần tạo ứng dụng $ thay vì viết là –

+0

Trong mã được tạo tự động yii, ứng dụng đã tạo với thông tin được cung cấp trong tệp cấu hình. Trong trường hợp này ở cấp ứng dụng, chúng tôi đang thiết lập múi giờ. Vì vậy, chúng ta cần tạo ứng dụng $ thay vì viết như Yii :: createWebApplication ($ config) -> run() vì điều này không cho phép chúng tôi thực hiện bất kỳ sửa đổi nào cho ứng dụng trước khi chạy. Thay đổi chúng tôi muốn đặt cho ứng dụng biết múi giờ của chúng tôi. Trong tương lai nếu có bất kỳ thông số nào khác mà bạn muốn thay đổi, bạn có thể thực hiện dễ dàng bằng cách sửa đổi ứng dụng trước khi chạy. Hy vọng nó xóa những gì tôi đang cố gắng để làm :) –

2

Rõ ràng tôi là một trong số ít các mùa về câu hỏi này, nhưng vì lợi ích của các người chịu đau khổ tiếp theo: Tôi chỉ gặp vấn đề này và trong trường hợp của tôi (trái ngược với OP, người đã cố gắng tương tự mà không thành công) sửa đổi là sửa đổi php.ini, thay đổi

date.timezone = America/New York 

để

date.timezone = America/New_York 

Đó là thêm dấu gạch dưới.

1

Tôi đã sửa đổi /etc/php.ini

[Date] ; Xác định múi giờ mặc định được sử dụng bởi các hàm ngày ; http://php.net/date.timezone date.timezone = ('Asia/kolkata')

và hiện đang hoạt động tốt.

Vipin Pal

5

hãy thử điều này, nó phù hợp với tôi.

date_default_timezone_set('America/New_York'); 

Trong tệp thực sự đang khiếu nại.

6

Mở tập tin .htaccess của bạn, thêm dòng này vào file, tiết kiệm, và thử lại:

php_value date.timezone "America/Sao_Paulo" 

này làm việc cho tôi.

1

Bạn có thể đã quên xóa dấu chấm phẩy để bỏ ghi chú dòng đó. Đối với dòng date.timezone = "US/Central", hãy chắc chắn rằng không có dấu chấm phẩy nào ở phía trước dòng đó.

0

Tôi thấy, kỳ lạ, rằng tôi có thể sửa lỗi bằng cách đặt khai báo múi giờ tại TOP của tệp php.ini của tôi.

Đã có trong php.ini của tôi. Hai lần, thật vậy. Và tôi đã kéo tóc của tôi ra bởi vì mọi người đã nói rằng phải có một ini đang được nạp ... Không có.

Hy vọng điều này có thể tiết kiệm cho người khác thời gian/rụng tóc.

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