0

我在所有index.php文件中使用以下内容来包含全局页脚:

<?php include($_SERVER['DOCUMENT_ROOT'].'/_footer.php'); ?>

_footer.php 文件本身除了返回当前年份的 PHP 没有太多内容:

    <div class="footer">
        <p id="left">Company Address</p>
        <p id="right">Copyright <?php echo date("Y"); ?> Company Incorporated</p>
    </div>

</div> <!-- end .wrapper -->

</body>
</html>

虽然上面的代码在上传到 Web 服务器时有效,但它在我的本地主机(带有 Coda 2 的 Mac OS X)中不起作用,并且我收到错误消息:

警告: DATE() [ FUNCTION.DATE ]:依赖系统的时区设置是不安全的。您需要使用 DATE.TIMEZONE 设置或 DATE_DEFAULT_TIMEZONE_SET() 函数。如果您使用了这些方法中的任何一种,但您仍然收到此警告,您很可能拼错了时区标识符。我们在第3行的/USERS/USER/SITES/COMPANY/EXAMPLE.COM/_FOOTER.PHP 中为“GMT/0.0/NO DST”选择了“UTC”

我认为设置或不设置时区不会是一个问题(因为它是一个简单的功能,旨在仅显示年份),但是在本地测试时它会破坏页脚的设计:

在此处输入图像描述

所有文本(例如“COPYRIGHT”)都应位于该黄色框内。

在这种情况下我该怎么办?

4

5 回答 5

6

你读过错误信息吗?它非常清楚地表明依赖系统的时区设置是不安全的,并且您需要使用Date.Timezone设置或date_default_timezone_set()功能。

所以,做一个或另一个。

要么a)修改你php.ini有这个:

 date.timezone=Europe/London

或 b) 在您的调用之上调用它date()(或在全局包含的脚本中):

date_default_timezone_set('Europe/London');

显然,Europe/London应替换为您的实际时区标识符,该列表可在此处获得:http: //php.net/manual/en/timezones.php

只是一个额外的说明,如果它没有显示在您的服务器上,那是因为要么display_errors被禁用,要么您的错误报告级别低于它在您的开发机器中的级别,这当然应该是。

于 2012-12-20T13:50:07.927 回答
1
  1. 阅读并了解错误在 php 中的工作方式:http: //php.net/manual/en/function.error-reporting.php。让自己成为一种错误方法,不包括在页面上显示它,而是将其发送到文件中。

  2. 通过执行警告内容来解决问题:请参阅http://php.net/manual/en/function.date-default-timezone-set.php

  3. 如果您想粗暴,@请在产生警告的调用前面加上一个。它抑制错误/警告。

于 2012-12-20T13:50:38.527 回答
1

我会将您的 html “由内而外”以这种方式解决您的问题:

<?php
   date_default_timezone_set('America/Chicago');
   $displayDate = date("Y");
   print <<<HERE
     <div class="footer">
        <p id="left">Company Address</p>
        <p id="right">Copyright $displayDate Company Incorporated</p>
     </div>
HERE;
?>

您可以做更复杂的事情来设置日期文本并使其“恰到好处”。

于 2012-12-20T13:57:00.887 回答
0

date_default_timezone_set

http://php.net/manual/en/function.date-default-timezone-set.php

于 2012-12-20T13:49:17.963 回答
0

请在 php.ini date.timezone中设置默认时区

eg: date.timezone =  = America/Los_Angeles 
于 2012-12-20T13:50:48.163 回答