PHP包括与'echo date'结合使用在localhost中不起作用?

时间:2012-12-20 13:47:04

标签: php date localhost echo coda

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

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

除了PHP之外,_footer.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服务器时有效,但它在我的localhost(带有Coda 2的Mac OS X)中不起作用,我收到错误消息:

  

警告: DATE()[ FUNCTION.DATE ]:系统的TIMEZONE设置无法安装。您需要使用   DATE.TIMEZONE设置或DATE_DEFAULT_TIMEZONE_SET()函数。在   如果你使用了这些方法中的任何一种,你仍然会得到这个   警告,您最可能误解了TIMEZONE IDENTIFIER。我们   选择'UTC'为'GMT / 0.0 / NO DST'INSTEAD IN    /USERS/USER/SITES/COMPANY/EXAMPLE.COM/_FOOTER.PHP 在线 3

我认为设置时区不是一个问题(因为它是一个仅用于显示年份的简单函数),但它在本地测试时打破了页脚的设计:

enter image description here

所有文字(例如“版权所有”)都是在黄色框内。

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

5 个答案:

答案 0 :(得分: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被禁用,或者您的错误报告级别低于开发计算机中的错误报告级别,这当然应该是。

答案 1 :(得分: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. 如果您想要粗暴,请在产生警告的电话前放置@。它压倒了错误/警告。

答案 2 :(得分: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;
?>

您可以执行更复杂的操作来设置日期文本并使其“恰到好处”。

答案 3 :(得分:0)

答案 4 :(得分:0)

请在php.ini date.timezone

中设置默认时区
eg: date.timezone =  = America/Los_Angeles