magento前台访问错误 - Class name must be a valid object or a string

1.magento 1.x 版本,站点搬迁后,前台访问,提示错误:Fatal error: Class name must be a valid object or a string in /www/users/domain.name/includes/src/__default.php on line 29658

2.查看 __default.php 相应的行,大概有如下:

    public function getConnectionTypeInstance($type)
    {
        if (!isset($this->_connectionTypes[$type])) {
            $config = Mage::getConfig()->getResourceTypeConfig($type);
            $typeClass = $config->getClassName();
            $this->_connectionTypes[$type] = new $typeClass();
        }
        return $this->_connectionTypes[$type];
    }

3.网上查得,这是mysql连接相关。查看 local.xml 文件中mysql的配置内容,是写了 pdo_mysqli ,但查看当前的php模块中,仅有 pdo_mysql
mag-pdo_mysql-1.png

4.将 local.xml 文件中的 pdo_mysqli 替换为 pdo_mysql 后,就正常了
mag-pdo_mysql-2.png

参考:https://stackoverflow.com/questions/13377491/magento-fatal-error-class-name-must-be-a-valid-object-or-a-string

在cron计划任务中使用aws命令

问题:包含aws命令的脚本,可以在Shell里正常执行,但不能在cron中定时执行。

aws lightsail stop-instance --instance-name Debian-1GB-CNNC-1
sleep 60
aws lightsail start-instance --instance-name Debian-1GB-CNNC-1

原因:很可能是因为cron中执行时,找不到aws程序,即默认执行路径中,没有aws。

解决:在脚本里添加aws所在的路径 /usr/local/bin/ ,即可。

#!/bin/bash
PATH=$PATH:/usr/local/bin/
aws lightsail stop-instance --instance-name Debian-1GB-CNNC-1
sleep 60
aws lightsail start-instance --instance-name Debian-1GB-CNNC-1

aws-cron-path-1.png

参考:https://serverfault.com/questions/614890/cant-run-aws-cli-from-cron-credentials

在Windows 2019里安装WSL - Debian

在微软的新版本系统里,可以通过Windows Subsystem Linux跑Debian系统,完成一些日常开发的任务。

过程:

1.winver # 在PowerShell里,执行此命令,确认当前Windows版本支持WSL功能
win2019-wsl-1.png

2.Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux # 在PowerShell里,执行此命令,启用WSL功能,且重启机子
win2019-wsl-2.png

3.Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile wsl-debian-gnulinux.appx -UseBasicParsing # 在PowerShell里,执行此命令,下载 Debian 安装包

4.Rename-Item wsl-debian-gnulinux.appx wsl-debian-gnulinux.zip # 在PowerShell里,执行此命令,重启名安装包文件为zip文件

5.Expand-Archive wsl-debian-gnulinux.zip debian # 在PowerShell里,执行此命令,解压到debian目录
win2019-wsl-3.png

6..\debian.exe # 安装 debian 系统,完成后会提示设置新用户及密码
win2019-wsl-4.png

参考:https://docs.microsoft.com/zh-cn/windows/wsl/install-on-server

Windows添加.NET Framework 3.0 NetFx3 失败 - 状态为:0x800f0950

环境:Windows Server 2019

过程:

1.添加角色和功能时,选中IIS及.NET Framewok 3.5,提示安装失败,错误:0x800f0950
win-0x800f0950-1.png

2.在“事件查看器”中,有“启动程序包 Microsoft .NET Framework 3.0 的更新 NetFx3失败。状态为:0x800f0950”
win-0x800f0950-2.png

3.手动通过Windows Update更新,会自动打上.NET Framework的相关补丁
win-0x800f0950-3.png

4.再次添加角色和功能
win-0x800f0950-4.png

5.成功安装
win-0x800f0950-5.png

6.在IIS管理器中,查看应用程序池中,有相应的.NET版本
win-0x800f0950-6.png

参考:https://answers.microsoft.com/zh-hans/insider/forum/all/win10-dism%E9%94%99%E8%AF%AF-0x800f0950/f665f040-2192-4ffa-93b7-9f270c0881ec?page=2

在FreeBSD 11.2里安装shadowsocks-libev

移动宽带价格挺实惠,但可能是因为多用户使用同一个公网的IPv4地址,且有时IPv4的地址在站点的数据库中会飘移,时不时会被认为账号有操作风险,要求人机验证或手机短验证。所以呢,有时不得不找个代理来浏览网站方便些。

系统:FreeBSD 11.2 64位

过程:

1.pkg install shadowsocks-libev # 安装 shadowsocks-libev
freebsd-shadowsock-libev-1.png

2.vi /usr/local/etc/shadowsocks-libev/config.json # 编辑配置文件,如更改监听的IP地址
freebsd-shadowsock-libev-2.png

3.sysrc shadowsocks_libev_enable="YES" # 启用 shadowsocks_libev 服务

4.service shadowsocks_libev onestart # 启动 shadowsocks_libev 服务
freebsd-shadowsock-libev-3.png

5.在浏览器里测试,正常
freebsd-shadowsock-libev-4.png

参考:https://www.freebsd.org/cgi/ports.cgi?query=shadowsocks&stype=all