更新失败的故障排除

有时在更新 Mautic 时,过程可能会停滞或中途失败。这可能会导致问题,因为它会使 Mautic 处于两个版本之间的状态,通常这会让系统无法使用。

Note

一般来说,更新以这种方式失败是因为托管环境的资源不足。如果您使用共享主机,请考虑迁移到虚拟专用服务器或专用服务器。请阅读 安装如何更新 Mautic 部分了解更多。

以下流程可以帮助完成一次失败的升级。

在开始这些步骤之前,请尽可能确保您有一个 经过测试的 Mautic 实例备份

检查数据库架构更新

Mautic 有一个内置工具,使您能够验证数据库并确定是否有任何架构更新需要执行。访问 example.com/s/update/schema 查看是否需要任何更新。

如果这不可能,或者您的 Mautic 实例完全宕机,请按照以下提示操作。

如果您没有 SSH 访问权限,请跳到 SSH 访问不可用

SSH 访问可用

通过 SSH 访问您的服务器会让事情变得更加容易。通过命令行登录,并使用以下命令将目录切换到 Mautic 目录:

cd /your/mautic/directory

1. 尝试清除缓存

当升级尝试在最后一步失败时,可能只是过期的缓存导致了问题。使用以下命令手动清除:

php bin/console cache:clear

如果此命令抛出 PHP 错误,您可以尝试使用以下命令删除缓存文件夹——请小心,这会删除指定路径中的所有文件和文件夹,因此请确保您输入正确,并在正确的目录中。

rm -rf var/cache

如果清除缓存未能解决您的问题,请继续下一步。

2. 手动触发更新

第一步是使用以下命令确定是否有任何可用更新:

php bin/console mautic:update:find

此命令的输出会通知您是否有任何更新需要应用。如果有,请运行以下命令应用它们:

php bin/console mautic:update:apply

如果没有找到更新,请继续下一步。

3. 检查未完成的数据库迁移

运行以下命令来识别任何未完成的数据库迁移:

php bin/console doctrine:migration:status

如果有任何报告的迁移,首先确保您有一个经过测试的数据库备份,然后再继续,因为此命令会对数据库进行更改,然后运行:

php bin/console doctrine:migration:migrate

4. 尝试手动更新文件

此步骤需要一些手动干预——这部分没有命令可用。

要手动更新文件,您必须:

  1. 备份(下载)您服务器上的所有 Mautic 文件到本地计算机,使用文件传输协议(FTP)或 scp 命令,后者速度更快。

  2. 删除您服务器上的所有 Mautic 文件和文件夹。使用 FTP 或 rm 命令——使用后者时要极其小心。

  3. https://mautic.org/download 下载最新的 Mautic 软件包。

  4. 将 zip 包上传到服务器的 Mautic 文件夹中,使用 FTP 或 scp 命令,后者速度更快。

  5. 使用 unzip 3.3.3.zip 解压——将文件名更改为您上传的文件名。然后您可以使用命令 rm 3.3.3.zip 删除 zip 文件。

  6. 上传 config/local.php——注意,在 Mautic 5.0 之前路径是 app/config/local.php——从本地计算机上的备份到服务器上全新的 Mautic 文件夹——Mautic 现在应该可以运行。

  7. 上传您的自定义数据(如果有的话)。您可以在以下文件夹中找到自定义文件:media/filespluginsthemestranslations

SSH 访问不可用

有一个 PHP 脚本可以完成前面部分中几乎所有的步骤。您可以找到此脚本 in this Gist

脚本下方有关于如何使用该脚本的描述。有一些细节需要您以不同的方式处理,因此请仔细阅读这些说明。例如,您必须使用 FTP 上传和下载文件。您必须在本地计算机上解压文件并上传这些文件,这需要更长的时间。

运行命令时出现 PHP 错误

首先,阅读错误消息,通常会给出问题的良好指示。接下来,在您偏好的搜索引擎中搜索该错误。您也可以搜索 Mautic Community Forums 看看其他人是否报告并解决了相同的问题。

允许的内存大小耗尽

报告的错误是:

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 10924085 bytes) in ...

这意味着 Apache 可用的内存限制太低。请编辑 php.ini 配置文件中的 memory_limit

处理资源限制 中了解更多。

缺少必需的 PHP 扩展

Fatal: Class 'ZipArchive' not found

这意味着 PHP 无法处理 Zip 包——您必须更改服务器配置以允许在命令行解压文件。询问您的托管提供商,或搜索相关教程。

还需要更多帮助?

如果您需要帮助,有几个地方可以去寻求帮助。请记住,大多数使用社区论坛、聊天和 GitHub 的人都是志愿者。

如果您认为您的配置导致了问题,请在 Mautic Community Forums 上提问。在发帖之前先搜索,因为很可能过去有人已经回答过您的问题。

您也可以在 Mautic Community Slack 上与人实时聊天,但所有支持请求必须在论坛上发布。先在那里创建一个帖子,然后在 Slack 中发送该帖子的链接(如果您正在与某人讨论)。

在所有情况下,详细描述问题以及您为解决该问题所遵循的所有步骤非常重要。至少应包含以下内容:

  • 复现问题的步骤——问题如何产生的逐步说明,或如何复现它

  • 您服务器的 PHP 版本

  • 您看到的错误消息——如果您没有直接看到错误消息,请在 var/logs 文件夹和服务器日志中搜索。服务器日志的位置因您的配置而异。Ubuntu 服务器通常将日志存储在 /var/log/apache2/error.log 中。有时您的托管提供商可能会在控制面板中提供查看日志的图形界面。

如果您没有提供这些最基本的信息,试图帮助您的人就需要向您询问这些信息,所以请省去他们的麻烦,主动提供这些信息。另外,重要的一点是,请保持礼貌。Mautic 是一个开源项目,人们正在奉献他们的空闲时间来帮助您。