Due to the temporary use of overseas space, I find that the time is always wrong when I publish my blog. Based on my previous experience in programming, this is a time zone issue. This problem is not difficult to solve. I wrote down my solution for future reference.
The city setting on the PHP script side can be set under php.ini to set the value of the date.timezone key to Asia/Shanghai. But usually the shared virtual host itself does not have permission to modify php.ini. At this time, you should add
in the public part of the program
ini_set(date.timezone,Asia/Shanghai);
Dynamically modify php.ini settings. You can then test whether the time is correct:
var_dump(date());
If the local time of the server is correct, then the problem will usually be solved. Attached, PHP 5.1 and above provides a special function to modify the corresponding time zone:
Date_default_timezone_set(Asia/Shanghai);
It is recommended to use this function because it is more versatile. Corresponding to Asia/Shanghai, other mainland time zones that can be used are: Asia/Chongqing, Asia/Shanghai, Asia/Urumqi (in order, Chongqing, Shanghai, Urumqi); available in Hong Kong and Taiwan: Asia/Macao, Asia/Hong_Kong, Asia/Taipei (Macau, Hong Kong, Taipei in order); and Singapore: Asia/Singapore; other available values are: Etc/GMT-8, Singapore, Hongkong, PRC; foreigners seem to have missed Beijing.
However, after I successfully modified the time zone on the PHP side, I found that the date was not recorded correctly. At this time, I considered whether it was a database problem. Sure enough, because the function inserted by the program does not call PHP's time, but directly uses MySQL's CURRECT_TIMESTAMP. At this time, you need to consider whether the time zone in MySQL can be modified.
Referring to the MySQL documentation, I found a feasible SQL statement:
SET GLOBAL time_zone = +8:00;
Among them, +8:00 is the representation method of East Eighth District, and other urban areas can be deduced by analogy. And when I inserted the change statement into the database model, I found that the permissions were insufficient (damn virtual host provider). Next I debugged many statements, such as:
DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);
SQL statement to display time zone:
SHOW VARIABLES LIKE system_time_zone
Wait. Due to the limitations of MySQL permissions, there is no complete solution. I Googled it and found that foreigners have a very good solution. But he needs to modify each SQL statement that inserts data. This solution is not very effective. Once the database time zone is changed to normal, the corresponding SQL statement must be changed back.
And I consider that since the PHP side can already solve the time problem correctly. Although the MySQL database can be solved using the corresponding functions, it will have to be changed back if it is migrated to another host environment in the future. The corresponding field is of type TIMESTAMP, and the default value is CURRECT_TIMESTAMP. Of course, the time can be specified.
Then my approach is to let PHP insert the current correct time, so although the program needs to be modified accordingly. However, if you modify the configuration in the future, you only need to modify one place. Please pay attention to the format when inserting into the database at the end:
date(Y-m-d H:i:s) This can solve the problem. Attached, some very good reference materials:
This will solve the problem. Attached, some very good reference materials:
http://www.BkJia.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4000.html
UPDATE: Brother wiLdGoose said that he also encountered the same problem, but could not solve it. After making various assumptions and judgments, I finally found out that it was Zend Studio's time zone configuration problem (I sweated). It seems that in addition to the operating environment, the development environment also needs to pay attention to the following.
http://www.bkjia.com/PHPjc/486013.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/486013.htmlTechArticleDue to the temporary use of overseas space, I find that the time is always wrong when I publish my blog. Based on my previous experience in programming, this is a time zone issue. The solution to this problem is not...