• phpcms


    最近将phpcmsV9升级至php7.1,中间踩过一些坑,这里列出来给大家参考下。

    1. 迁移至php7.1+mysql5.6+nginx的修改项目
    已修改 : /phpcms/libs/classes/checkcode.class.php
    已修改 : /phpcms/libs/classes/db_factory.class.php
    已增加 : /phpcms/libs/classes/db_mysqli.class.php
    已修改 : /phpcms/libs/classes/model.class.php
    已修改 : /phpcms/libs/classes/template_cache.class.php
    已修改 : /phpcms/libs/classes/update.class.php
    已修改 : /phpcms/libs/functions/global.func.php
    已修改 : /phpcms/modules/admin/cache_all.php
    已修改 : /phpcms/modules/content/fields/editor/output.inc.php
    已修改 : /phpcms/modules/content/fields/title/output.inc.php
     
    2. 函数htmlspecialchars()在php7下严格校验编码,导致空白,修改为new_html_special_chars()方法:
    已修改 : /phpcms/modules/content/fields/content_form.class.php
    已修改 : /phpcms/modules/content/fields/omnipotent/field_edit_form.inc.php
    已修改 : /phpcms/modules/content/fields/textarea/field_edit_form.inc.php
    已修改 : /phpcms/modules/yp/fields/omnipotent/field_edit_form.inc.php
    已修改 : /phpcms/modules/yp/fields/textarea/field_edit_form.inc.php
    已修改 : /phpcms/modules/yp/fields/title/output.inc.php
    已修改 : /phpcms/modules/yp/fields/yp_form.class.php
    所有以上修改/增加的文件,均在下面压缩包中,建议下载后对比查看,不建议直接替换;
     
    phpcmsV9升级php7修改文件 [点击直接下载]
     
    其中global.func.php仅修改不可替换,请自行对比文件改动的地方;
     
    3.修改database.php的type值为mysqli;
    注意事项:
    A.php7.1对函数参数个数严格校验,对函数形参一定要赋默认值,否则直接Fatal error: Uncaught ArgumentCountError: Too few arguments to function;
    B.htmlspecialchars严格编码,以前在php5.2下正常使用的,需要修改为 new_html_special_chars() 具体函数定义见 global.func.php;
    C.数据库5.6对老版本5.0的listorder-1问题,将字段设置为有符号即可;
    D.伪静态规则升级,与httpd.ini变化不太大,需要逐条测试;
    E.MySQL函数mysql_在php7中废弃,代之以mysqli_函数;
     
    伪静态rewrite规则而升级遇到一个坑,就是中文url的问题,我是这么解决的:
    1
    2
    3
    4
    #tags
    rewrite ^(.*)/tags/?([A-Za-z]?)/(?:page([0-9]+))?/?$ $1/index.php?m=tags&c=index&a=init&letter=$2&page=$3 last;
    rewrite ^(.*)/tags/?(?:page([0-9]+))?/?$ $1/index.php?m=tags&c=index&a=init&page=$2 last;
    rewrite ^(.*)/tags/([^/.]+)/?(?:page([0-9]+))?/?$ $1/index.php?m=tags&c=index&a=init&tag=$2&page=$3 last;
    重点看第三条,直接匹配tags/后的所有字符,然后让前两条规则优先,解决冲突的问题;经过GET打印测试,匹配完美。
  • 相关阅读:
    设计模式的四个基本要素
    拖拉记录上下移动--Ajax UI
    Rails-Treasure chest2 嵌套表单;
    YAML(摘录)
    Rails-Treasure chest1 (自定义Model网址;多语言包; 时区设置, TimeZone类; 格式日期时间; 表单单选UI; 表单多选UI;Select2 Plugin)
    iTerm2的设置和Zsh.
    **优化--后端**: 计数缓存counter_cache; rack-mini-profiler(2300🌟) ; bullet(5000✨):侦测N+1query
    优化--前端(全占课,未完成作业:);CDN; Http/2的设置(未完成)
    null值的判断
    if else
  • 原文地址:https://www.cnblogs.com/yhq-qhh/p/10961201.html
Copyright © 2020-2023  润新知