杨小杰博客(Youngxj)提供免费教程下载和网站搭建技术教程,主要分享和发布网站源码,致力创造一个高质量网络资源教程的分享平台
  • 首页
  • 网站搭建
  • 关于emlog后台在线安装模提示失败的问题分析和解决办法

关于emlog后台在线安装模提示失败的问题分析和解决办法

Young小杰2018-9-28 16:11网站搭建(4)728查询中……小标签: emlog 原创

最近一直在写一款Emlog后台模版,所以遇到很多问题,其中就是在线应用安装失败的问题,下面冷静分析一波。

首先我们打开路径/admin/globals.php,

3.png
我们可以看到第10行,官方服务域名为 http://www.emlog.net/  但是现在emlog全局都加了https
所以如果你的后台是https的,请一定要先修改这行为 https://www.emlog.net/ 之后才能正常访问在线应用页面
然后我们随便选一款模版进行安装。
当点击安装后,会提示 模板下载失败,可能是服务器网络问题,请手动下载安装,返回应用中心
到这里不要慌张,连忙审查一波。
安装失败截图.png
由上图看到 source 参数传递 的值为 
/template/download/676

然后我们点到preview可以看到如下内容

安装失败审查元素.png

<br />
<b>Warning</b>:  fopen(https://www.emlog.net//template/download/676): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in <b>D:\phpStudy\PHPTutorial\WWW\include\lib\function.base.php</b> on line <b>808</b><br />
对没错,就是这个报错了,意思就是FOpen(https://www.emlog.net//template/download/676):打开流失败:HTTP请求失败!HTTP / 1.1 404未找到
为什么会找不到呢?细心的小朋友应该会发现问题答案了。没错https://www.emlog.net/后面还有一个/符号,所以这个多的是哪儿来的呢?
然后我们回到上一步,审查安装这个按钮的链接
安装失败地址.png
urldecode之后的链接就是http://localhost/admin/store.php?action=instpl&source=/template/download/676
也就是之前source传递的参数/template/download/676
那么官方服务域名一直没动过的情况下,链接参数发生改变,应该就是官方加了 / 符号了,至于为什么加,原因未知。
现在解决有两种办法
1、修改官方服务域名地址为https://www.emlog.net
      如果是小白可以修改这一行,从而解决这个问题。
      但是你修改官方服务域名的话,从引发另外一个问题,就是你的后台应用直接会访问不了。
为什么访问不了?还是冷静分析一波。
打开路径/admin/views/store.php(这里使用的是官方的主题目录,如果你换过主题找自己主题的目录文件即可)
官方store代码截图.png
上图中的第4行,我们可以看到
src="<?php echo OFFICIAL_SERVICE_HOST;?>store/<?php echo Option::EMLOG_VERSION; ?>/<?php echo $site_url_encode; ?>"
<?php echo OFFICIAL_SERVICE_HOST;?>为官方服务域名,之后的store为二级路径,这之间没有 / 符号分隔,所以访问的地址就会变成
https://www.emlog.netstore/5.3.1/aHR0cDovL2xvY2FsaG9zdC8%3D
显然这个地址是不对的,在<?php echo OFFICIAL_SERVICE_HOST;?>后面加上一个 /  符号即可。这样就可以完美修复了。
安装成功.png
2、把source参数的第一个 / 符号使用函数替换掉
    如果是大佬可以试试。

    如果要改source传递的参数,需要打开路径/amdin/store.php

修改store文件.png

    我们可以看到第38行$source = isset($_GET['source']) ? trim($_GET['source']) : '';就是接收source参数的地方。
    我们直接修改第44行$temp_file = emFecthFile(OFFICIAL_SERVICE_HOST . $soure);为
$temp_file = emFecthFile(OFFICIAL_SERVICE_HOST . preg_replace('/\//', '', $source, 1));
    就可以替换删除第一个 / 符号了

如果都不想修改的话,那就放大招吧,疯狂艾特 那多 ,从根源解决这个路径问题。

ps:尽请期待我的新作,Y+Eadmin后台模版

发表评论:

发表评论:

  • 你全力做到的最好,还不如别人随便搞搞。打卡成功,现在时间:20点57分记得每天坚持打卡哦!

  • 又加 Lv 1

    Y+Eadmin后台模版   什么时候放出来?

    • Young小杰 站长

      回复了又加:计划10月4号之前,但还是要视完成度而定

    • 又加 Lv 1

      回复了Young小杰:等待中...