# 常见问题 三
## 38,js报错 Uncaught ReferenceError: Base64 is not defined
2.2.6升级到2.3.0后,后台主题编辑页面 打不开 js有报错
> Uncaught ReferenceError: Base64 is not defined
解决办法:
找到下面这几个文件
~~~
> /vendor/magento/module-email/view/adminhtml/ui_component/design_config_form.xml
> /vendor/magento/module-catalog/view/adminhtml/ui_component/design_config_form.xml
> /vendor/magento/module-backend/view/adminhtml/ui_component/design_config_form.xml
> /vendor/magento/module-swatches/view/adminhtml/ui_component/design_config_form.xml
> /vendor/magento/module-theme/view/adminhtml/ui_component/design_config_form.xml
~~~
把
```
formElement="fileUploader"
```
替换成
```
formElement="imageUploader"
```
都保存后,再重新deploy下 就好了。
参考
https://github.com/magento/magento2/issues/19549
## 39,js报错 Uncaught Error: Script error for: tinymce
2.2.6升级到2.3.0后,后台第三方插件页面打不开,js报错
```
Uncaught Error: Script error for: tinymce
```
这是因为2.3.0里,升级tinymce了,升级到tinymce4了。之前旧的tinymce废弃了,所以需要把`tinymce`的改成`tinymce4`就行。
比如
```
define([
"jquery",
"tinymce",
```
改成
```
define([
"jquery",
"tinymce4",
```
## 40,Unique constraint violation found
> Unique constraint violation found {"exception":"[object] (Magento\\Framework\\Exception\\AlreadyExistsException(code: 0): Unique constraint violation found at /www/wwwroot/newbestyle.com/vendor/magento/framework/Model/ResourceModel/Db/AbstractDb.php:426, Magento\\Framework\\DB\\Adapter\\DuplicateException(code: 1062): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0-8144-product' for key 'GOOGLEOPTIMIZER_CODE_STORE_ID_ENTITY_ID_ENTITY_TYPE', query was: INSERT INTO `googleoptimizer_code` (`entity_id`, `entity_type`, `store_id`, `experiment_script`) VALUES (?, ?, ?, ?) at
解决办法:
1, Go to admin -> Stores -> Configuration -> Sales -> Google API section
2, Change the configuration Enable Content Experiments to "No"
## 41,Argument 4 passed to Magento\Developer\Model\View\Asset\PreProcessor\FrontendCompilation
> FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught TypeError: Argument 4 passed to Magento\De
veloper\Model\View\Asset\PreProcessor\FrontendCompilation::processContent() must be an instance of Magento\Framework\View\Asset\File\FallbackContext, in
stance of Magento\Framework\View\Asset\File\Context given, called in /home/www/magento2/vendor/magento/module-developer/Model/View/Asset/Pr
eProcessor/FrontendCompilation.php on line 90 and defined in /home/www/magento2/vendor/magento/module-developer/Model/View/Asset/PreProcess
or/FrontendCompilation.php:107
Stack trace:
#0 /home/www/magento2/vendor/magento/module-developer/Model/View/Asset/PreProcessor/FrontendCompilation.php(90): Magento\Developer\Model\Vi
ew\Asset\PreProcessor\FrontendCompilation->processContent('e3054c302a868e8...', '@import 'source...', '', Object(Magento\Framework\View\Asset\File\Conte
xt))
这是因为你在developer模式下,并且开启了merge css/js功能,导致出问题了。
解决办法有2种:
1,改成production模式,保留merge css/js功能
2,或者在developer模式下,把`dev/js/merge_files`和`dev/css/merge_css_files`设为0,也就是不merge css/js。
## 42,main.CRITICAL: No linked stock found
2.3.1才有这问题,需要设置多源库存。
常见于分类页面或者产品页面报错 甚至不显示。
解决办法:
1,Try going into Stores > Inventory > Sources and adding in a source. Maybe call it your business name, then fill in a country and zip value.
2,Then, try going into Stores > Inventory > Stocks. Call it "Default Stock" and apply it to all websites (if multi store) and hit save.
设置个默认仓库就行了。
## 43,Fatal error: Uncaught TypeError: Return value of Magento\\Framework\\Encryption\\Adapter\\SodiumChachaIetf::decrypt() must be of the type string
这是m2的一个bug,在2.3.0里特殊环境下会发生。
解决办法:
修改 `vendor/magento/framework/Encryption/Adapter/SodiumChachaIetf.php`
~~~
$plainText = sodium_crypto_aead_chacha20poly1305_ietf_decrypt(
$payload,
$nonce,
$nonce,
$this->key
);
if ($plainText == false)
{
return "";
}
return $plainText;
~~~
参考:[https://github.com/magento/magento2/issues/19590](https://github.com/magento/magento2/issues/19590)
## 44, 2.3.1后台产品列表里无法更新所有产品的属性
2.3.1里产品列表 `Select All`,再 `Update Attributes`,发现只更新了20个(当前一页)的产品。而不是所有的产品。
这是2.3.1的一个bug,2.3.2里还没修复。
[https://github.com/magento/magento2/issues/22004](https://github.com/magento/magento2/issues/22004)
[https://github.com/magento/magento2/commit/0f29a266256cca24cd7dd1082aa4aa31a3a9eacd](https://github.com/magento/magento2/commit/0f29a266256cca24cd7dd1082aa4aa31a3a9eacd)
直接修改`vendor/magento/module-ui/view/base/web/js/grid/massactions.js`
把
```
if (itemsType === 'excluded' && data.selected && data.selected.length) {
itemsType = 'selected';
data[itemsType] = _.difference(data.selected, data.excluded);
}
```
这几段代码注释掉就行了。
## 45, 2.2.6/2.2.7版本后台上传 placeholder图片,不能保存
![](https://box.kancloud.cn/c95a29d41429ef0920b15837306bc84b_1640x550.png)
这是m2的一个bug,在2.2.6和2.2.7里出现,在2.3.0里修复了。
如果可以升级版本的话,就直接升级到最新版本。
如果不能升级版本的话,就修改下源代码:
把`vendor/magento/module-config/Model/Config.php`内容替换为:
[https://raw.githubusercontent.com/magento/magento2/be9fa4a73b85022565db991f11dfceeecf40edae/app/code/Magento/Config/Model/Config.php](https://raw.githubusercontent.com/magento/magento2/be9fa4a73b85022565db991f11dfceeecf40edae/app/code/Magento/Config/Model/Config.php)
参考
[https://magento.stackexchange.com/questions/247775/cant-upload-product-placeholder-images-in-magento-2](https://magento.stackexchange.com/questions/247775/cant-upload-product-placeholder-images-in-magento-2)
## 46, bundle产品和简单(可配置)产品一起购买下单,创建invoice时简单(可配置)产品会丢失,导致支付的金额不对。
这是2.3.1的bug。在2.3.2里修复了。
[https://github.com/magento/magento2/issues/22246](https://github.com/magento/magento2/issues/22246)
[https://github.com/magento/magento2/commit/ec2c6ca7df68de9aaccecfb899b102a2a3eaa631](https://github.com/magento/magento2/commit/ec2c6ca7df68de9aaccecfb899b102a2a3eaa631)
## 47, Type Error occurred when creating object: Magento\\Framework\\Locale\\Resolver
这是2.3.1的bug。在2.3.2里修复了。
```
Type Error occurred when creating object: Magento\\Framework\\Locale\\Resolver, Return value of Magento\\Framework\\Encrypt
ion\\Adapter\\SodiumChachaIetf::decrypt() must be of the type string, boolean returned \[\]
```
见
https://github.com/magento/magento2/issues/19590
修改了 `vendor/magento/framework/Encryption/Adapter/SodiumChachaIetf.php`
```
public function decrypt(string $data): string
{
$nonce = mb_substr($data, 0, SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES, '8bit');
$payload = mb_substr($data, SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES, null, '8bit');
try {
$plainText = sodium_crypto_aead_chacha20poly1305_ietf_decrypt(
$payload,
$nonce,
$nonce,
$this->key
);
} catch (\SodiumException $e) {
$plainText = '';
}
return $plainText !== false ? $plainText : '';
}
```
## 48, Front controller reached 100 router match iterations
~~~
Exception #0 (LogicException): Front controller reached 100 router match iterations
~~~
这一般是2个插件同名,导致冲突了。
比如2个blog插件,`Magefan_Blog`和`MGS_Blog`,这2个的frontend/routes.xml 都是`blog`。
并且都重写了前台路由:
```
MGS\Blog\Controller\Router
Magefan\Blog\Controller\Router
```
导致冲突了。禁用一个,保留一个就行。
[https://devdocs.magento.com/guides/v2.3/extension-dev-guide/routing.html](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/routing.html)
[https://github.com/magento/magento2/issues/21580](https://github.com/magento/magento2/issues/21580)
## 49, Session data file is not created by your uid
```
Warning: SessionHandler::read(): Session data file is not created by your uid
```
这个是权限问题,php的session默认放在/tmp下的,给/tmp权限即可。
或者m2里可以指定session存放路径,在app/etc/env.php里添加:
```
'session' => [
'save' => 'files',
'save_path' => '/var/www/toncen-test/var/session'
],
```
## 50,Elasticsearch pagination 分页有问题
这是2.3.3的一个bug。
见
[https://github.com/magento/magento2/issues/25038](https://github.com/magento/magento2/issues/25038)
里面有解决方案
## 51,apache下403 Forbidden
> Forbidden
>
> You don't have permission to access /webfiles on this server. Server unable to read htaccess file, denying access to be safe
这是权限问题,需要给magento2根目录755的权限
`sudo chmod 755 /var/www/magento2`
[https://stackoverflow.com/questions/27890751/magento-new-host-403-forbidden-server-unable-to-read-htaccess-file](https://stackoverflow.com/questions/27890751/magento-new-host-403-forbidden-server-unable-to-read-htaccess-file)
## 52,Magento\Framework\View\Page\Config\Renderer::canTypeBeFont() must be of the type string, null given
> PHP message: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Ma
gento\Framework\View\Page\Config\Renderer::canTypeBeFont() must be of the type string, null given, called in /home/www/magento2/vendor/magento/framework/View/Page/Config/Renderer.php on line 347 and defined in /home/www/magento2/vendor/magento/framewor
k/View/Page/Config/Renderer.php:426
这是因为layout渲染html的时候发现没有找到对应的css或者js文件。一般多发生于新安装的插件。
需要deploy下。
## 53,Call to a member function getIsResizeEnabled() on null
> PHP message: PHP Fatal error: Uncaught Error: Call to a member function getIsResizeEnabled() on null in vendor/magento/module-backend/view/adminhtml/templates/media/uploader.phtml:16
这个在v2.3.x版本里会出现,是因为你安装的某个插件有调用上传图片的类,少传了一个参数。
你肯定首先要找到插件的代码,一般类似这样
```
$this->addChild('uploader', 'Magento\Backend\Block\Media\Uploader');
```
你改成
```
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$imageUploadConfigDataProvider = $_objectManager->get(\Magento\Backend\Block\DataProviders\ImageUploadConfig::class);
$this->addChild(
'uploader',
\Magento\Backend\Block\Media\Uploader::class,
['image_upload_config_data' => $imageUploadConfigDataProvider]
);
```
这样就行了。
参考
[https://github.com/magento/magento2/issues/22394](https://github.com/magento/magento2/issues/22394)
- 序言
- 全面解读Magento2
- Magento2简介
- Magento2特点
- Magento2目录结构
- Magento2语法讲解
- 运行原理剖析
- 开启Magento2之旅
- 安装Magnto2
- 购买阿里云服务器(Ubuntu系统)
- 安装和配置Nginx/PHP/PHP-FPM
- 配置Mysql并创建数据库
- 配置Nginx虚拟主机
- 安装和配置Magento2
- 导入演示数据
- 手把手教你创建git代码库
- 续外篇-购买AWS服务器
- 续外篇-Mac下安装LNMP
- 续外篇-安装phpmyadmin
- 如何升级php版本
- 使用Magento2
- 创建多网店多域名以及安装中文语言包
- 创建独立cms页面
- 创建分类和产品
- 创建产品属性
- 创建优惠券
- 导入产品csv
- 下单/发票/发货/退货
- M2常用命令
- 如何安装主题
- 如何安装插件
- 如何使用API
- 常见问题
- 常见问题 二
- 常见问题 三
- 常见问题 四
- 常见问题 五
- Magento2主题
- 主题框架详解
- Layout文件详解
- M2里的JS
- 主题实战
- 前期准备工作
- 完成首页
- 重写分类页面
- 锦囊妙计
- 产品详情页面讲解
- 购物车页面讲解
- 支付页面讲解
- 主题修改记录
- 关于主题的一些学员问答
- Magento2插件
- 插件框架详解
- XML配置说明
- 插件实战
- 准备工作
- 写代码
- 调试
- 难点解析
- 插件升级
- 插件修改记录
- 扩展阅读
- 如何创建cron任务和功能
- 发送邮件(带附件)
- 如何在代码里创建属性
- Magento2线上部署
- 基本流程
- 配置Redis
- 配置Varnish+SSL
- Varnish配置教程(2020年修订版)
- Paypal设置
- 一些优化
- Magento2 版本升级
- v2.3.0版本填坑指南
- v2.4.x升级指南
- 配置nginx pagespeed模块进行加速
- M1数据库迁移到M2指南
- 安装配置Elasticsearch
- Magento2常用工具
- 网站测速分析工具
- 在线创建插件模块
- M2后台可视化编辑器里的标签变量
- 遇到问题,我该怎么做
- 常用代码
- SEO在线分析工具
- 本地用xdebug远程调试mgtdev2服务器的项目
- 后续之路