Magento2 安装系列四 安装Magento2.3常见问题与解决方案

前言

前面几个教程,我们已经完成了安装虚拟机,在虚拟机安装CentOS7系统,然后在CentOS7系统上安装宝塔,在宝塔完成Lnmp的环境搭建,最后安装了Magento2.3。然而安装完Magento2.3只是万里长征的第一步,因为后面还有各种各样的bug要修复~

1.安装完成后前台后台页面CSS样式和JS样式不生效。

原因是css和js的静态路径缺少index.php,但是Magento安装完,默认是没有index.php的

解决办法:(治标不治本~)

1. 在数据库MYSQL中运行SQL:

insert core_config_data (config_id, scope, scope_id, path, value) values (null, 'default', 0, 'dev/static/sign', 0);

2. 在SSH magento2根目录运行CLI命令

php bin/magento setup:static-content:deploy -f
 
php bin/magento indexer:reindex

3. 删除magento2跟文件夹下的var目录

rm -rf var/*

2.安装完成后,发现后台404,或者前台链接打开404

原因还是因为Magento安装后路径默认是隐藏index.php的,如果你已经运行过上面的解决办法,那么你在路径中加上index.php即可正常访问后台。如
http://magento23.com/index.php/admin_qjeg89/ 。但是正如我前面所说,这方法是治标不治本,因为当你要使用伪静态的时候,也不想路径上带有index.php的时候。

解决办法:(一劳永逸)

1.在Magento2的根目录下有一个文件,nginx.conf.sample文件,这个是Magento推荐的nginx配置,我们需要把Nginx默认的配置改成Magento推荐的配置。

在宝塔Nginx配置里面可以看到

nginx对网站的配置是在 include /www/server/panel/vhost/nginx/*.conf;,我们跟踪该文件路径找到我们网站的nginx配置

我们可以看到我们网站的配置已经找到了,打开该文件,内容如下:

server
{
    listen 80;
    server_name magento23.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/magento2_3;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-72.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/magento2_3.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/magento2_3.com.log;
    error_log  /www/wwwlogs/magento2_3.com.error.log;
}

我们把Magento2根目录的nginx.conf.sample文件的配置代码移到网站的nginx配置文件里,修改后代码如下:

## Example configuration:
 upstream fastcgi_backend {
#    # use tcp connection
#    # server  127.0.0.1:9000;
#    # or socket
    server   unix:/var/run/php/php7.0-fpm.sock;
 }
server
{
    listen 80;
    server_name 你的域名;
    index index.php index.html index.htm default.php default.htm default.html;
    set $MAGE_ROOT /www/wwwroot/你的根目录;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-72.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/wwwroot/你的根目录/nginx.conf.sample;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/magento2_3.com.log;
    error_log  /www/wwwlogs/magento2_3.com.error.log;
}

保存完成后,重启Nginx

4.Constraint "quote_to_store" references table that does not exist.

此错误一般都是以quote前缀的表缺失导致的报错

5.Warning:require():open_basedir restrction……………………..

如果是用宝塔安装的,出现此错误,直接取消勾选防跨站攻击,然后重启php服务即可

6.The each() function is deprecated. ..................

这种是因为php7+以上版本抛弃了each函数导致的报错, 在报错的提示文件处,把

while (list ($key, $val) = each ($para_temp)) {

改成,参数按照实际参数来更改~

foreach ($para_temp as $key => $val) {

7.文件权限问题

在Magento2里,

/pub
/var
/generated
/vendor

这几个文件夹的权限必须为777,当你发现报错的提示里,带有这些文件夹的信息时,先去看一下权限有没有被更改了,可能文件外面的权限没改变,但不代表里面的权限没有改变

8.未完待续

相关文章

0 0 投票数
文章评分
订阅评论
提醒
1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
weili
weili
4 年 前

有没有视频呀, 这个看起来好难操作