Magento PATCH_SUPEE-11085 get Fatal error: Can’t use method return value in write context in /app/code/core/Mage/Authorizenet/Model/Directpost.php on line 391

Note:这篇文章的解决对象是PHP 5.5 以下版本的magento 报错,如果不是PHP 5.5以下版本,可能帮不到你。我使用的是1.9版本的Magento

PATCH_SUPEE-11085 主要是Magento 应对Authrize 变更key的加密类型,Pacth在SSH很好打。但是在后台创建订单时会像文章标体那样报错。

主要问题点是 PHP 5.5以下版本empty() 函数不能检查变量。

所以把line 391代码修改来适配

$response_data = $response->getData('x_SHA2_Hash'); //rewrite for PHP 5.5 lower BY Burt
  $hashConfigKey = !empty($response_data) ? 'signature_key' : 'trans_md5';

主要参考资料

stock flow

Magento Guide Authorize key

树莓派config.txt 中hdmi部分设置

提示点:

  • 不仅适用于树莓派官方镜像,包含其他适用config.txt的系统软件,比如XBMC 
  • 写完镜像后,windows系统下读取SD卡,就可以看到config.txt,notepad英文状态下就可以编辑
  • config.txt可以比喻成传统PC的BIOS的一组设置项
  • 官方文档 config.txt 视频部分

通俗的语言,整理翻译下官网文档,关于官方对HDMI部分的文档,个人理解,不是直译

hdmi_safe = 1
# 安全模式,最大兼容性。
# 也就是其他都无效时,加上这句试试,还不行的话,很可能是显示器或板子视频口有问题

hdmi_drive
# 用于选择HDMI还是DVI
# hdmi_drive=1 DVI模式,没有声音传输
# hdmi_drive=2 HDMI模式,有声音传输(需要显示器支持)

hdmi_group / hdmi_mode
# 这两个一般成对使用
# hdmi_group 主要用于判断显示器类型:传统电视(CEA)或 电脑显示器(DMT)
# hdmi_group =1 传统电视(CEA)
# hdmi_group =2 电脑显示器(DMT)
# hdmi_group =0 自动判断
# hdmi_mode 主要是分辨率,刷新率和屏幕比例这些,根据hdmi_group 分为两个表
# hdmi_mode 很长,CEA模式就有100多种,DMT 也有80多种
# hdmi_mode=1 且 hdmi_group =1 是 VGA (640x480)60Hz 60Hz 4:3

hdmi_force_mode=1
# 强制显示器使用hdmi_group / hdmi_mode中设置,当显示器忽略hdmi_group / hdmi_mode的时候

hdmi_ignore_cec_init=1
# 不让显示器切换信号源,当树莓派重启的时候

hdmi_force_hotplug=1
# 即使没有检测到HDMI显示器,也会使用HDMI输出模式。
hdmi_ignore_hotplug=1
# 即使检测到HDMI显示器,也会使用复合输出模式。

hdmi_force_edid_audio=1
# 强制使用显示器扬声器。则表明显示器支持所有的音频格式,即使在不支持DTS/AC3的情况下,也可以进行直通。
hdmi_ignore_edid_audio=1
# 强制使用耳机孔。则表示显示屏不支持所有音频格式。这意味着ALSA将默认使用模拟音频(耳机)插孔。

How update Access Keys in Magento 2.x in console of shell-在命令行更新Magento许可密钥对,Invalid credentials

背景 :

起源于直接在 Magento 秘钥管理页面直接删除了 key,然后即便在后台管理页面setup的System config 更新,但是命令安composer安装插件时,还是提示秘钥不正确,错误提示

Invalid credentials for ‘https://repo.magento.com/packages.json’, aborting

解决步骤

  1. 切换到对应网站目录
  2. composer config -l 显示下配置,最后两行即是密钥对
    1. [http-basic.repo.magento.com.username]
    2. [http-basic.repo.magento.com.password]
  3. composer更新
    • composer global config http-basic.repo.magento.com <public_key> <private_key>

主要参考链接

stackexchange

magento 1.9.x订单邮件发送不出去

1.解决办法

crontab要设置正确,因为1.9.1之后订单邮件是任务计划队列发出

SSH
sudo crontab -e
#add
 * * * * * /bin/sh /www/wwwroot/path/magento/cron.sh

按照你的路径来修改上方,推荐Aoe_Scheduler 插件

https://github.com/AOEpeople/Aoe_Scheduler

此外,stackoverflow 有人给出直接修改成不用队列发送的,如果修改不了crontab也可以考虑

连接如下

  1. 修改email template (推荐)
  2. 修改order
  3. BSS
  4. 官方论坛的帖子1 帖子2

PHP 假日判断方式

确认你不是想知道是今天是周几


echo date('w'); //返回当天的星期;数字0表示是星期天,数字123456表示星期一到六

国内放假安排信息源:

参考 信息公开公文公报

国内有开发者在维护的API :

http://tool.bitefu.net/jiari/

测试工具
https://www.sojson.com/httpRequest/

也可以参考 股票开市,来自 新浪

因为假日安排是人工硬编码,API也存在格式变化或者停止服务的其他状况。

自编写固定假日数字也是一个选择。

python 读取写入文件笔记

使用版本python 3.8

  • 读取时候提示编码错误
  • 比如
UnicodeDecodeError: 'gbk' codec can't decode byte xxxx :illegal multibyte sequence

3.8 可用做法是,参考

FILE_OBJECT= open('order.log','r', encoding='UTF-8')

另外一种,可能对2.x版本,我的3.8不行

FILE_OBJECT= open('order.log','rb')
  • CSV 写入会有空行,3.8 newline=” 参考
with open(output_bad, "w",newline='', encoding='UTF-8') as bad:

2.x版本是’wb+’

with open('xxx.csv','wb+',encoding='utf-8') as csvfile:#将写入方式改为wb+ 二进制写入

python 将字符串str转化成单个/一个列表list

使用的是方括号直接转化

r = 'dsadsd'
list_r = list(r)
entire_r = [r]
print('list(r) is %s'%list_r)
print('[r] is %s'%entire_r)

list(r) is ['d', 's', 'a', 'd', 's', 'd']
[r] is ['dsadsd']

尤其 CSV 的writer.writerow 传递的是list 参数,如果使用string,就存在把string分解到很多列的问题。

搜索了string转list给出都是list()函数转化,python确实是一门好用的语言

【Python】 request 错误 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。’

最终解决办法:浏览器使用代理,需要在IE 取消勾选。

其他需要排除的:

  1. 至少要安装了request模块
  2. 本地网络是通畅的
  3. requests 的网站是正常的

错误截图如下

代码部分

import requests
r = requests.get('https://www.metaweather.com/api/location/2161842')

如果无法停用代理

请参考此篇

Centos7 VM 安装记录

  1. 上网问题

使用的CentOS-7-x86_64-Minimal-1908,输入ifconfig的时候提示,没有此命令。

vi /etc/sysconfig/network-scripts ifcfg-ens33

把 ONBOOT属性更改为yes ,NAT模式下(我使用的)就获取到IP 了

2.install 问题 could not resolve host

网络通了以后换源,我使用的是aliyunhttps://developer.aliyun.com/mirror/centos

官方的知道方案,比较详细

save product redirect to dashboard in Magento backend 编辑保存产品跳转到后台首页

去检查防火墙设置,check firewall seetings on host

我的解决办法,可能不适合你,因为我使用的是宝塔面板,里面有一个收费插件, Nginx防火墙 ,我看到了日志里有关于CC的拦截警告,我的IP也在其中,添加到白名单之后,正常工作。

前面是问题背景和尝试的办法:

Magento Version is 1.9.4.0 点击修改保存按钮后,直接跳转到Dashboard页面了,产品也没保存成功。

网上有些人遇到过,第三个连接提到了 mod_secure 需要关闭,但我不建议这样做。

以下连接:

1.https://magento.stackexchange.com/questions/181083/product-save-and-continue-redirect-to-dashboard

2.https://community.magento.com/t5/Magento-1-x-Technical-Issues/Magento-not-saving-product-edits-and-redirects-to-dashboard/td-p/40275

3. https://stackoverflow.com/questions/37999189/magento-not-saving-product-edits-and-redirects-to-dashboard

我尝试过,换到另外一个服务器,没问题。当然第二台服务器没有开启防火墙

[Solved]Magento install with docker MySql 8 error connect refuse 数据库拒绝链接错误

问题点:

数据库的加密方式( caching_sha2_password )问题造成的。

当然,你有义务去检查的账号密码,至少在命令行里可以正常使用。还有mysql.user的host里是 %(代表已开启远程链接)。

参考链接 中第四点

select host,user,plugin,authentication_string from mysql.user;

看下plugin的加密方式,mysql 8 之后使用了caching_sha2_password,而非比较传统的mysql_native_password,所以如下更新

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  ### 把root改成123456 mysql的登录密码
flush privileges; ### 刷新生效

这样子,root就可以链接了,更好的做法是选择你相应的数据库user 而不是root。

此外,版本低于12的Navicat可以连接了。

当然,此外是否配置了正确的端口映射/防火墙等其他问题,也是需要注意。

【翻译】使用composer 安装Magento 2.3.x

官方原文链接

RoadMap

We use Composer to manage Magento components and their dependencies. Using Composer to get the Magento software metapackage provides the following advantages:

我们使用Composer来管理Magento组件及其依赖项。使用Composer获得Magento软件metapackage有以下优势:

  • Reuse third-party libraries without bundling them with source code
  • Reduce extension conflicts and compatibility issues by using a component-based architecture with robust dependency management
  • Adhere to PHP-Framework Interoperability Group (FIG) standards
  • Repackage Magento Open Source with other components
  • Use the Magento software in a production environment

– 重用第三方库,而不用将它们与源代码绑定
-通过使用基于组件的体系结构和健壮的依赖关系管理,减少扩展冲突和兼容性问题
-遵守PHP框架互操作性组(FIG)标准
-可以用其他组件重新打包Magento开源代码
-在生产环境中使用Magento软件

You must create a Composer project from our metapackage if you want to use the Magento Web Setup Wizard to upgrade the Magento software and third-party extensions.

如果您想使用Magento Web安装向导升级Magento软件和第三方扩展,则必须从我们的集合包中创建Composer项目。 (这也是我首先翻译这个文章的意图,因为手动向导安装无法在网页前端升级操作,官方有讲)

Prerequisites

Before you continue, you must do the following:

先决条件
在你继续之前,你必须做以下事情:
-设置一个满足系统需求的服务器(2G以上内存,apache 2.2 or 2.4,
MySQL 5.6, 5.7 /MariaDB 10.0, 10.1, 10.2,PHP 7.1.3+/ 7.2.x 及扩展/OPcache/PHP配置设置 ,SSL 1.1以上/不支持自签名,系统依赖,MAT/SMTP 邮箱服务,Redis3.2/Varnish 4.x 5.2/ Elasticsearch 5.2.x 2.x/ RabbitMQ 3.7.x )
-创建Magento文件系统所有者(详细)
-安装Composer
-获取Magento代码存储库的身份验证密钥 (详细

Get the metapackage

To get the Magento metapackage:

  1. Log in to your Magento server as, or switch to, the Magento file system owner.
  2. Change to the web server docroot directory or a directory that you have configured as a virtual host docroot.
  3. Create a new Composer project using the Magento Open Source or Magento Commerce metapackage.

获取安装包

-以Magento文件系统所有者(详细)的身份登录Magento服务器,或切换到该服务器。
-更改到web服务器docroot目录或已配置为虚拟主机docroot的目录。
-使用Magento开源或Magento 商业版的 metapackage 创建一个新的Composer项目。

开源版

composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>

商业版

composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition <install-directory-name>

When prompted, enter your Magento authentication keys. Your public key is your username; your private key is your password.

If you encounter errors, such as Could not find package... or ...no matching package found, make sure there are no typos in your command. If you still encounter errors, you may not be authorized to download Magento Commerce. Contact Magento support for help.

See troubleshooting for help with more errors.

当提示时,输入Magento身份验证密钥。你的公钥是你的用户名;您的私钥是您的密码。
如果遇到错误,比如找不到包…还是……没有找到匹配的包,请确保您的命令中没有输入错误。如果您仍然遇到错误,您可能没有授权下载Magento Commerce。联系Magento寻求帮助。
有关更多错误,请参见疑难解答。

Set file permissions设置文件权限

You must set read-write permissions for the web server group before you install the Magento software. This is necessary so that the Setup Wizard and command line can write files to the Magento file system.

在安装Magento软件之前,必须为web服务器组设置读写权限。这是必要的,以便安装向导和命令行可以将文件写入Magento文件系统。

cd /var/www/html/<magento install directory>
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-data . # Ubuntu
chmod u+x bin/magento

安装magento 一种是命令行一种是页面安装向导

(已经到这一步了,别折腾自己了,选择页面向导安装吧)

http://<Magento-host-or-IP>/<path-to-magento-root>/setup
For example: http://localhost/magento2ee/setup

命令行方式

This example assumes that the Magento install directory is named magento2ee, the db-host is on the same machine (localhost), and that the db-namedb-user, and db-password are all magento:

假设文件夹名为 magento2ee ,数据库在同一台服务器,数据库链接参数如上。

bin/magento setup:install \
--base-url=http://localhost/magento2ee \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=magento \
--backend-frontname=admin \
--admin-firstname=admin \
--admin-lastname=admin \
[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

命令行更多官方细节

iPhone bluetooth APN window10 show INVALID_MDL_RANGE blue screen -手机蓝牙分享网络蓝屏

首先先说下,如果你电脑没有360管家,可能不适用

First of all, If you not use ‘ 360 security managemnt soft(Qihoo)’,maybe can not help you.Please check your firewell settings.

我(dell inspiron 15-3568)(win10 ver1809)试过2块网卡 普通的AC3165 和AC9260 都是自带蓝牙,然后更新最新驱动(360驱动大师和驱动精灵),然后我的iPhone 6s Plus 还是连上蓝牙个人局域网后,大概30秒左右的时间就会蓝屏,错误代码INVALID_MDL_RANGE

搜索引擎发现很少人遇到这个问题,本文只是记录下,后面遇到问题了,再更新吧

下一步,我测试安卓手机会不会正常(测试机型-小米4 lte 一样不行)

然后问下微信dell客服(dell 客服首先收给了官方的驱动,也是不行;后面恢复了BIOS也不行;看了dmp文件说是360的问题,卸载360中)

OK。搞定了,卸载了360,使用默认驱动,没问题了,现在更新就是基于蓝牙APN。当然也可能其他安全软件的拦截。

学到一个单词 Tethering 意思为网络共享

网上遇到问题的网友(没有给出解决问题办法):

1.微软社区,中文

微软论坛,英文

2.戴尔论坛,dell xps机型,英文

3.联想社区,英文

Disallowed file type. magento upload error

后台上传图片遇到这个错误。

如果确保文件类型没错的话,正常的解决办法是 增加后台对于图片
Maximum width  的设置:

System > Configuration > Catalog > Product Image

一般设置到1200~1500px左右,或者按照你实际的来。

参考链接

此外还有一些文章提到CSRF问题,和magento 漏洞有关,希望可以帮到你

中文版

宝塔面板安装godaddy 证书

步骤一,生成CSR 和私钥

https://www.chinassl.net/ssltools/generator-csr.html

当然有其他家都可以,这一步得到CSR和密钥,就是宝塔证书的左栏( 密钥(KEY) )

步骤二,拿着CSR去godaddy 申请证书(如果你域名在godaddy上就不用这样,直接就生成了)

步骤三,下载证书crt文件,选择是一串数字和字母的,不要包含bundle字样的,编辑代码,获取就是 宝塔右栏( 证书(PEM格式) )

最后,保存生效就可以了

参看链接:

https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=704&highlight=ssl%E8%AF%81%E4%B9%A6

Magento的订单状态,Magento Order Status 与 Magento Order State的区别和联系

 

Magento的订单状态,在后台一般现实的是 Order Status ,但是在数据库 sales_flat_order 表里却有两个字段 state 和status,而且两者有高重复度的值。到底两者有什么区别和联系?虽然很基础,但很多次会被困扰,准备一次讲清楚。

先讲state(可翻译成,状态/国家/州):

1.可用值包含 new, processing, complete, holded, closed, canceled 等

一般不可以自定义

2.用于订单内部处理 internally .

3.一个state【订单州】可以有很多个status【订单地位】.

 

再说status(可翻译成,状态/地位):

1.显示为Processing ,Pending ,Payment Suspected Fraud ,Payment Review Pending ,On Hold ,Complete ,Closed ,Canceled ,Pending PayPal

2.字段值可以自己定义的,System –> Order Statuses,可以创建新的【订单地位】,并和【订单州】关联

order status processing
order status的变化

 

 

参考链接

https://magento.stackexchange.com/questions/515/what-are-the-definitions-of-the-order-statuses-or-where-should-i-integrate-my/516

https://www.magestore.com/manage-magento-online-store/magento-order-status-and-magento-order-state

https://docs.magento.com/m1/ce/user_guide/order-processing/order-status.html

Magento: Difference between order states and statuses