【问题标题】:Error 500: DateTime::__construct(): Failed to parse time string错误 500:DateTime::__construct():无法解析时间字符串
【发布时间】:2012-08-08 11:50:29
【问题描述】:

在 Joomla 组件 com_search 中,我修改了以下行:

<?php if ($this->params->get('show_date')) echo JText::sprintf('Published %s', $result->created).'. '; ?>

到:

<?php if ($this->params->get('show_date')) echo '<span>'.JText::_('PUBLISHED').':     '.'</span>'.JText::sprintf('%s', JHtml::_('date',$result->created, JText::_('d. m. Y, H:i'))); ?>

搜索时出现错误 500:

DateTime::__construct(): Failed to parse time string (19. 06. 2012) at position 0 (1): Unexpected character

问题出在哪里?

来自 com_search (default_results.php) 的完整代码以便更好地理解:

<div class="items">

<?php foreach ($this->results as $result) : ?>
<article class="item">

    <header>

        <?php if ( $result->href ) : ?>
        <h1 class="title"><a href="<?php echo JRoute::_($result->href); ?>" <?php if ($result->browsernav == 1 ) echo 'target="_blank"'; ?>><?php  echo $this->escape($result->title); ?></a></h1>
        <?php else : ?>
        <h1 class="title"><?php echo $this->escape($result->title); ?></h1>
        <?php endif; ?>

        <?php if ($result->section || $this->params->get('show_date')) : ?>
        <p class="meta">

            <?php if ($this->params->get('show_date')) echo '<span>'.JText::_('PUBLISHED').': '.'</span>'.JText::sprintf('%s', JHtml::_('date',$result->created, JText::_('d. m. Y, H:i'))); ?>
            <?php if ($result->section) echo JText::_('TPL_WARP_POSTED_IN').' '.$this->escape($result->section); ?>
        </p>
        <?php endif; ?>

    </header>

    <div class="content clearfix"><?php echo $result->text; ?></div>

</article>
<?php endforeach; ?>

</div>
<?php echo $this->pagination->getPagesLinks(); ?>

【问题讨论】:

    标签: php date joomla


    【解决方案1】:

    我刚刚将您的新行复制并粘贴到 Joomla 2.5.6 的本地托管副本中,它工作得非常好 - 完全没有错误!

    【讨论】:

    • 嗯,我不知道问题出在哪里,可能在Yootheme Balance Template中,因为我修改了他的com_search而不是Joomla中默认的com_search。
    【解决方案2】:

    DateTime::__construct(): 无法在位置 0 (1) 解析时间字符串 (19. 06. 2012): 意外字符

    19. 06. 2012 不是 PHP 的 DateTime 类接受的日期格式,请参阅 PHP 手册页“Date Formats”了解可以理解的格式列表。

    【讨论】:

    • 感谢您的回复,但我可以问您。如何解决它,因为我完全是初学者。只有我想根据需要设置特定日期以格式化输出。
    • 我不知道 Joomla 的内部运作,也懒得去看。我会帮助使用普通的 PHP 解决方案,但我认为这不是您正在寻找的。所以,我在这个阶段唯一的建议是尽可能提供 PHP 确实 理解的日期格式。
    【解决方案3】:

    在 Joomla 中,当尝试安装任何类型的扩展时也会发生此错误,但 PHP 代码无法写入 temp 和 logs 目录。

    如果进入系统、系统信息和目录权限,都应该是可写的。可以在 configuration.php 或使用 Global Configuration 菜单和 System and Server 选项卡更改 temp 和 logs 目录的路径。

    【讨论】:

    • 很抱歉,我从未见过因安装扩展程序而导致的搜索结果错误。您的意思是回答不同的问题吗?
    【解决方案4】:

    在谷歌上花了四个小时解决这个问题后,我发现我的原因是无法写入 /logs/tmp 文件夹。

    要进行验证,请按以下步骤操作:

    1. 加载以下 URL(替换您自己的域和主机名):
      http://www.example.com/administrator/index.php?option=com_admin&amp;view=sysinfo
    2. 导航到“所有者权利”
    3. 检查logstmp是否可写
    4. 如果没有,您应该在 configuration.php 文件中更改这些文件的路径。

    这是来自Joomla forum topic 的相关引用,它帮助我得出了这个结论:

    您好,我最近遇到了同样的问题,但找到了窍门!

    日志目录 ($log_path) ./logs/ 不可写
    临时目录 ($tmp_path) ./tmp/ 不可写

    正确的目录路径必须是:
    日志目录 ($log_path) ../logs/
    日志目录 ($log_path) ../tmp/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 2019-09-07
      • 2016-03-08
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多