博客
关于我
php5 升级 php7 版本遇到的问题处理方法总结
阅读量:794 次
发布时间:2023-02-28

本文共 862 字,大约阅读时间需要 2 分钟。

在升级进销存系统源码的过程中,我们遇到了一些需要解决的技术问题。下面将这些问题的解决过程和经验总结如下:

  • mysql引擎在PHP7中的兼容性问题
  • 在PHP7版本中,原来的mysql扩展已经被弃用,使用会导致以下错误:

    Uncaught Error: Call to a member function init() on null

    这一问题的根本原因在于代码中使用了extension_loaded("mysql")来检测mysql扩展是否加载。由于PHP7已不支持mysql扩展,这一检测方法会返回false,导致后续操作失败。

    解决方案是将mysql扩展替换为mysqli扩展。需要注意的是,这一更换不仅仅是简单的名称改变,所有原来依赖于mysql扩展的操作都需要改用mysqli的对应函数进行处理。例如,mysql_affected_rows()需要改为mysqli_affected_rows()mysql_fetch_array()需要改为mysqli_fetch_array()等等。

    1. Smarty模板类构造函数的弃用问题
    2. 在升级过程中,我们发现原有的Smarty模板类使用了PHP4的构造函数写法。这在PHP7中会导致以下警告:

      Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP;

      这意味着Smarty类的构造函数的定义方式已经不再支持,将来会被废弃。

      解决方案是对Smarty类进行源码修改,将原来的构造函数__construct()的定义方式调整为PHP5+支持的方法。具体来说,就是将原来的构造函数名称保留(避免重复),并在类的定义中使用__construct()作为方法名。

      在完成上述两项修改后,系统的整体运行环境就得到了有效的升级。通过对mysql扩展的替换和Smarty模板类的源码调整,我们成功地解决了系统运行中的关键兼容性问题。

    转载地址:http://sutfk.baihongyu.com/

    你可能感兴趣的文章
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle script
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    oracle 创建字段自增长——两种实现方式汇总
    查看>>
    Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
    查看>>
    oracle 可传输的表空间:rman
    查看>>
    oracle 学习
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    oracle 行转列
    查看>>
    Oracle 表
    查看>>
    Oracle 递归
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    Oracle11G基本操作
    查看>>