开源电商网站 Magento / Adobe Commerce 又一例后台无法保存产品信息的问题修复

文章目录

    问题现象

    有两个已知问题:

    1. 打开后台分类管理,Manage Categories,显示的是乱码,实际上是没有渲染前的 HTML 源代码
    2. 无法新建产品,也无法编辑保存已有的商品信息

    版本

    这个版本比较久远。

    Magento ver. 1.7.0.2。现在都已经 2.4.7 版本了,估计那个时候还没有改名 Adobe Commerce 吧。

    乱码问题

    登录了后台,打开分类管理,链接如:

    https://www.sunzhongwei.com/index.php/my_admin_url/catalog_category/edit/key/xxxxx/?isAjax=true

    从浏览器的调试工具中可以看到,一个异步加载的页面接口,返回的数据格式非常诡异:

    <a href="https://www.xxx.com/" style="position:absolute; left:-8786px; top:0">xxx</a>
    {"content":"\n
    <div class=\"content-header\">
    

    正常的 json 返回数据前,被插入了一行非法网站的链接,所以导致 json 数据解析异常,也就导致了页面乱码。

    产品信息无法保存问题

    我以为这次遇到的无法保存问题,跟之前的 ES 接口异常是一样的问题,初步猜测是 ES 服务挂了。实际上,并不是。通过浏览器调试工具看,跟乱码问题的原因是一样的,都是在返回的 json 接口数据前加上了一行非法网站链接。

    到服务器上排查

    通过 history 操作历史,找到了 magento 网站的目录,在安装目录下搜索:

    # grep xxx.com -r . --exclude-dir=var
    
    ./index.php:<a href="https://www.xxx.com/" style="position:absolute; left:-8786px; top:0">xxx</a>
    

    注意排除掉 var 目录,主要是 var/log 目录下的日志文件太大,影响搜索效率。

    果然定位到了,就是 index.php 文件被黑客篡改了。

    那个文件的第一行被加上了链接。删除,就解决了问题。再次刷新后台,就能看到显示正常了,产品信息保存功能也都正常了。

    最好是参考 第二次 php 网站被黑的经历 禁止修改 index.php 文件,否则这个文件还会被篡改,毕竟被黑的根源并没有找到。

    terminal capability “cm” required

    这台服务器是一台 centos 6 的服务器,在上面执行 vim 编辑文件,总是显示界面混乱,不方便编辑。加上环境变量就可以正常操作了:

    export TERM=xterm; vim index.php
    

    如果是自己的服务器,为了避免以后每次都输入,可以加入 .bashrc 中:

    export TERM=xterm
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式