更新失败的故障排除
有时在更新 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. 尝试手动更新文件
此步骤需要一些手动干预——这部分没有命令可用。
要手动更新文件,您必须:
备份(下载)您服务器上的所有 Mautic 文件到本地计算机,使用文件传输协议(FTP)或
scp命令,后者速度更快。删除您服务器上的所有 Mautic 文件和文件夹。使用 FTP 或 rm 命令——使用后者时要极其小心。
从 https://mautic.org/download 下载最新的 Mautic 软件包。
将 zip 包上传到服务器的 Mautic 文件夹中,使用 FTP 或
scp命令,后者速度更快。使用
unzip 3.3.3.zip解压——将文件名更改为您上传的文件名。然后您可以使用命令rm 3.3.3.zip删除 zip 文件。上传
config/local.php——注意,在 Mautic 5.0 之前路径是app/config/local.php——从本地计算机上的备份到服务器上全新的 Mautic 文件夹——Mautic 现在应该可以运行。上传您的自定义数据(如果有的话)。您可以在以下文件夹中找到自定义文件:
media/files;plugins;themes;translations。
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 是一个开源项目,人们正在奉献他们的空闲时间来帮助您。