微信开放平台,全网发布的问题,微擎程序错误

全网发布测试出现 ,

返回Api文本消息 【失败】

返回普通文本消息 【失败】

测试地址 http://微擎web地址/api.php

 

如下图

经过修改api.php 加入调试语句 ,一般是

error_log(__LINE__ . PHP_EOL , 3, “zjpro.txt”);

或者

error_log(print_r($_GET,true) . PHP_EOL , 3, “zjpro.txt”);

调试出来一些GET参数后,就可以直接对api.php加参数测试了

测试地址 http://微擎web地址/api.php?appid=/xxxxx&……………………………………

然后调试api.php 得到正确的结果。

可能是 微擎的web 和 app 目录里面的common 目录的问题!

因为 load()->app(‘common’); 这行出错了。

经过 var_dump(load()) ; 发现 app 目录下不存在 common 目录,但是在web下存在。复制到app下解决。

 

php 的按位计算的一点备用

话说php的预定义变量 (只考虑 PHP7情况吧)

E_ALL  是  30719 (111011111111111) 15个错误提示位,

E_STRICT 是 000100000000000 用于补第4位的错误提示

E_NOTICE 是 8 (000000000001000)

E_ALL | E_STRICT ^ E_NOTICE 可以表示为

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1     E_ALL | E_STRICT
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0     E_NOTICE

结果是 111111111110111

E_ALL | E_STRICT & ~E_NOTICE 可以表示为

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  E_ALL | E_STRICT
1 1 1 1 1 1 1 1 1 1 1 0 1 1 1  ~E_NOTICE

结果是  111111111110111

从而可以理解为什么 有两种写法

error_reporting(E_ALL | E_STRICT ^ E_NOTICE);

error_reporting(E_ALL | E_STRICT & ~E_NOTICE);

 

 

 

sc 命令的用法

参考 https://jingyan.baidu.com/article/456c463b420f5e0a583144dd.html

简要介绍是:

  1. 设置服务的自启动性质 sc config 服务名 start= auto|demand|disabled
  2. 设置服务启动关闭   sc start|stop 服务名
  3. 删除服务名  sc delete 服务名
  4. 查询服务状态 sc query 服务名

destoon 在后台添加资讯,当文章存在多图,从远程下载会导致的图片和远程图片不一致的现象

故障介绍:

在destoon的后台添加资讯,选择 下载远程图片,当你的文章中含有比较多的图片,下载的图片可能和远程图片不一致的情况,是因为include\post.func.php 里面函数 save_remote 的一个“试图随机”取名,因为取值范围较窄导致重复。

$filename = timetodate($DT_TIME, ‘His’).mt_rand(10, 99).$_userid.’.’.$file_ext;

可以看出 mt_rand的取值范围只有90个,容易重复,可以考虑用更随机的函数代替

当然比较简单的就是加大随机范围 mt_rand(1000,99999);

或者手动写一个随机函数,这类函数很多了,就无需再重复。

dedecms 的keyword相关性改善

dedecms的相关文章的函数 lib_likearticle 里面是根据  keyword1 or keyword2 or … 这样的规律用一个sql解决的,并且用 order by id desc 来排序,可能导致第一个关键字的文章不在前面,下面的补丁就是解决这个问题。

思路是: 先根据第一个关键字搜索结果后,显示出来,如果数量不够 $row 指定的,那么就用关键字2继续查找,依次类推,直到搜索到 $row 数量。

修改的文件是 include\taglib\likearticle.lib.php 下面的连接是txt格式,请自行修改后缀为 .php

likearticle.lib

补丁文件

teamviewer 正在初始化显示参数的解决办法

在你用win远程桌面安装tw后,启动的tw里面因为你这是在一个远程里面开启的tw,

如果tw启用了多用户的方式,那么在你win控制台的那个tw的id和你在远程桌面里面看到id是不一样的,所以,打开tw的目录,找到一个log文件,
比如 TeamViewer12_Logfile.log,找找里面的 ID: 开头的

ID:  XXXXXXXX ,

那个可能和你原来看到的只相差一点点,试试用这个ID连接,你会有不一样的感受

苹果cms,maccms 关于自定义伪静态的一些二次开发

苹果cms maccms 8 有关伪静态方面列表页和详情页的自定义url

列表页的是 vod-type-id-{id}-pg-{pg} 表示的是分类id的第pg页,可以考虑根据不同的分类设置为 ,比如 type-id = 1 的是 /movie/pg-{pg}.html
比如 /movie/pg-1.html
如果 type-id=2 设置为 /tv/pg-{pg}.html,比如
/tv/pg-1.html,
我们通过修改 inc/common/template.php 的AppTpl类的getLink函数 ,在

 

$str = $jstart . MAC_PATH . $str . $strpg . $ext. $jend;$str = $jstart . MAC_PATH . $str . $strpg . $ext. $jend;
return str_replace(array(‘//’,’/index’.$rgext),array(‘/’,’/’),$str);

修改为

$str = $jstart . MAC_PATH . $str . $strpg . $ext. $jend;$str = $jstart . MAC_PATH . $str . $strpg . $ext. $jend;

$new_str = str_replace(array(‘//’,’/index’.$rgext),array(‘/’,’/’),$str);

// 这里增加伪静态的自定义代码比如

$new_str = preg_replace(“/vod\-type\-id\-1\-/”,”movie/”,$newstr);
// 这样是 吧 vod-type-id-1-pg-1.html 修改为  movie/pg-1.html
return $newstr;

=============================================================

同时需要修改 伪静态配置文件 .htaccess 或者 nginx的rewrite文件

RewriteRule ^movie/pg-(\d+)$   index.php\?m=vod-type-id-1-pg-$1

nginx的

rewrite ^/movie/pg-(.*)$ /index.php?m=vod-type-id-1-pg-$1  break;

 

centos 6.X x86_64 安装 rpm 的mysql 5.6 下载如下包

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-server-5.6.33-2.el6.x86_64.rpm

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-client-5.6.33-2.el6.x86_64.rpm

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-common-5.6.33-2.el6.x86_64.rpm

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-devel-5.6.33-2.el6.x86_64.rpm

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-libs-5.6.33-2.el6.x86_64.rpm

http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-libs-compat-5.6.33-2.el6.x86_64.rpm

dedecms 关键字链接 以长的为先,短的不做连接

dedecms后台设置关键字,文章里面会根据关键字自动增加连接

现在根据关键字的rank倒排序,建议比较长的排在前面,比如

你好样的  比 你好 有更大的rank,因为dedecms是根据rank做了倒排序的替换关键字,

如果希望不出现嵌套的连接,那么就需要做一些代码的变化 include\arc.archives.class.php

代码增加了行  1260-1269

// zjpro add 2017-08-22 QQ 733905
foreach($GLOBALS[‘replaced’] as $kk=>$vv)
{
if(strpos($kk, $word) !== FALSE)
{
$GLOBALS[‘replaced’][$word] = 1;
break;
}
}
// end zjpro QQ 733905

 

dedecms 函数扩展之:随机连接

问题背景:

在一个 kw.txt 里面用 “–”分割的 地址和关键字,形如

https://www.google.com–谷歌
https://www.github.com–git

现在模板里面随机调用5个这样的连接

{dede:rndkw runphp=’yes’}
@me = rndkw();
{/dede:rndkw}

在 \include\helpers\extend.helper.php 增加如下

 

if ( ! function_exists('rndkw'))
{
    function rndkw($str) { 
        
       
        
        $kw=file(getcwd() . DIRECTORY_SEPARATOR ."kw.txt");
         
        shuffle($kw);
        $s="";
        for($i=0;$i<5;$i++)
        {
            list($ah,$aw) = explode("--",$kw[$i]);
            $s .= "

".trim($aw)."

"; } return $s; } }

dedecms文章分页后的随机推荐文章在每个分页都相同改为不相同随机的方法

问题背景:

dedecms 发布文章,特别是图片的时候一般会分很多页,模板里面可能设置了随机推荐的其他图片,但是同一个文章的每个分页的这个随机推荐是一样的,如何改为不同?

问题解决:

模板里面一般是这类随机

{dede:arclist row=10 orderby=rand}
<li><a href=”[field:arcurl/]”>[field:title/]</a></li>
{/dede:arclist}

造成每个页面的随机都一样的原因就是 这个模板片段是只在处理一个文章的时候分析一次模板,如果每个分页再生成前再次分析下模板,理论上就再次扫描了一次,从而再次随机运行了一次代码。

方案:

include\arc.archives.class.php 的  MakeHtml 函数

在大概 410行,增加   $this->ParseTempletsFirst();

 

dedecms的GetPageTitlesST函数

include\arc.archives.class.php 里面 GetPageTitlesST 函数,在页面调用是

{dede:pagetitle style=’XXXX’ /}

那么就可以根据style来修改GetPageTitlesST 函数,使之能适用多种情况,比如

{dede:pagetitle style=’subtile_title’ /}

就需要走增加

if($styleName==’subtile_title’)
{
return  $this->SplitTitles[$pageNo-1] . “_” . $this->Fields[“title”] ;
}else{
return $this->Fields[“title”] ;
}

发文章的时候用

#p#第几页的标题#e#

 

 

PS:

可能UTF8的,这个函数有点问题,

最后的 #没能去掉,可以考虑用 sub_str($string,0,-1)消掉