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

Bau*_*umr 0 php date localhost echo coda

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

<?php include($_SERVER['DOCUMENT_ROOT'].'/_footer.php'); ?>
Run Code Online (Sandbox Code Playgroud)

除了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>
Run Code Online (Sandbox Code Playgroud)

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

警告: DATE()[ FUNCTION.DATE ]:系统的TIMEZONE设置不安全.您需要使用DATE.TIMEZONE设置或DATE_DEFAULT_TIMEZONE_SET()函数.如果您使用了这些方法中的任何一种,并且您仍然会收到此警告,您最可能错误地将时区识别器误认为是.我们选择了'UTC' FOR 'GMT/0.0/NO DST'代替 /USERS/USER/SITES/COMPANY/EXAMPLE.COM/_FOOTER.PHP ON LINE 3

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

在此输入图像描述

所有文本(例如"COPYRIGHT")都意味着在黄色框内.

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

Rud*_*ser 6

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

所以,做一个或另一个.

要么a)修改你php.ini的拥有:

 date.timezone=Europe/London
Run Code Online (Sandbox Code Playgroud)

或b)在您的呼叫上方date()(或在全局包含的脚本中)呼叫:

date_default_timezone_set('Europe/London');
Run Code Online (Sandbox Code Playgroud)

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

只是另外一个注意事项,如果它没有显示在您的服务器上,那是因为它们display_errors被禁用,或者您的错误报告级别低于开发机器中的错误报告级别,这当然应该是.