将Typo3 7.6更新到8.7,无法在XAMPP的前端测试环境中使用前端

时间:2018-10-23 13:48:36

标签: typo3 typo3-7.6.x typo3-8.x

我正在将Typo3 7.6更新到8.7。我在装有PHP 7.2的Windows上使用XAMPP在本地计算机上执行此操作。

我让后端工作了。它需要数据库中的一些手动工作,例如为自己的内容元素更改tt_content中的CType以及填充colPos。

但是,当我在前端调用页面时,我得到的只是一个超时:

    Fatal error: Maximum execution time of 60 seconds exceeded in
 C:\xampp\htdocs\typo3_src-8.7.19\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\Mysqli\MysqliStatement.php on line 92

(如果我将max_execution_time设置为300,这不会改变


编辑:我在上述文件的第92行之前添加了echo,这是函数:

public function __construct(\mysqli $conn, $prepareString)
    {
        $this->_conn = $conn;
        echo $prepareString."<br />";
        $this->_stmt = $conn->prepare($prepareString);
        if (false === $this->_stmt) {
            throw new MysqliException($this->_conn->error, $this->_conn->sqlstate, $this->_conn->errno);
        }

        $paramCount = $this->_stmt->param_count;
        if (0 < $paramCount) {
            $this->types = str_repeat('s', $paramCount);
            $this->_bindedValues = array_fill(1, $paramCount, null);
        }
    }

我得到的是以下语句1000次,始终完全相同:

`SELECT `tx_fed_page_controller_action_sub`, `t3ver_oid`, `pid`, `uid` FROM `pages` WHERE (uid = 0) AND ((`pages`.`deleted` = 0) AND (`pages`.`hidden` = 0) AND (`pages`.`starttime` <= 1540305000) AND ((`pages`.`endtime` = 0) OR (`pages`.`endtime` > 1540305000)))`

注意:在uid = 0的页面中没有任何条目。所以我真的不确定这有什么好处。是否需要一个页面的uid = 0?


我启用了在mysql中记录慢速查询的功能,但没有记录任何内容。我没有任何其他的PHP错误,也没有在typo3中获得日志条目。

所以现在我有点卡住了,不知道如何进行。

我为mysql启用了常规日志记录,当我在Frontent上调用页面时,我一次又一次执行以下SQL查询:

SELECT `tx_fed_page_controller_action_sub`, `t3ver_oid`, `pid`, `uid` FROM `pages` WHERE (uid = 0) AND ((`pages`.`deleted` = 0) AND (`pages`.`hidden` = 0) AND (`pages`.`starttime` <= 1540302600) AND ((`pages`.`endtime` = 0) OR (`pages`.`endtime` > 1540302600)))

手动执行此查询将返回空结果(在uid = 0的页面中没有任何条目)。我不知道这意味着什么。

我有什么选择?如何找到丢失的内容/错误在哪里?

2 个答案:

答案 0 :(得分:0)

第一:给您的PHP更多的运行时间。
在php.ini配置中,将最大执行时间增加到240秒。
请注意,对于生产模式下的TYPO3,建议使用240秒。如果您启动安装工具,则可以进行系统检查,并获取有关可能需要优化的配置的信息。

第二:避免使用开发模式,而使用生产模式。
执行速度更快,但是您将放弃调试选项。

调试总是花费更多的时间和更多的内存来准备所有这些信息。也许240秒还不够,您甚至需要更多的内存。

答案 1 :(得分:0)

字段tx_fed_page_controller_action_sub来自扩展名,它不是核心的一部分。您很有可能在系统中安装了助焊剂和流体页面。

尝试停用这些扩展名,并在没有扩展名的情况下继续操作。如果以后仍需要它们,请重新集成它们。超时通常意味着正在进行某种递归。根据我对flux的经验,内容元素本身可能会设置为自己的flux_parent,因此会创建一个无限的渲染循环,在max_execution_time之后会导致致命错误。

因此,在您的情况下,我将尝试查找导致此问题的记录(似乎是页面记录)和/或启动查询的代码。您不需要在Doctrine本身中进行调试:)