繁体   English   中英

使用Codeigniter的PHP 5.2应用程序升级到6.7

[英]PHP 5.2 app using Codeigniter upgrade to 6.7

我一直在执行任务,以升级使用php 5.2.17编写并使用Codeigniter的旧PHP Web应用程序。 从PHP 5.2升级到5.6时,我一直遇到一些错误。 乍看起来,问题可能是使用旧的PHP语法以及Codeigniter的一些问题的混合体。 我从未与Codeigniter合作,这使这项任务变得异常艰巨。 问题出现在页面上,您可以在其中编辑患者的一些现有数据,然后提交新的更新数据。 几乎是CRUD。
在支持> 5.6 PHP的服务器上,该对象一直运行良好,但是现在我转移到仅支持5.6 PHP的服务器上,我遇到了这些问题。

第一个问题:在表单页面上,我收到这两个错误,并且这些变量内部的数据未显示在页面上。 如果我决定提交新输入的数据,那么也不会保存新数据。

1)试图获取非对象的属性2)未定义的变量:行页面错误让我知道我的错误发生在以下几行:

        $anatomic_code = $rows->NerveCode;
        $ProxAccess = $rows->ProxAccess;
        $DistAccess = $rows->DistAccess;

从Codeigniter阅读文档后,建议我使用['']来访问数据,如果我收到错误消息“试图获取非对象的属性”,该错误消息消失了,但是我仍然遇到第二个错误,仍然看不到页面上的数据。

这是代码的更大片段:

<div id="wrapper"> 
    <?

    $exam_id = $this->uri->segment(3);
    $struct_id = $this->uri->segment(4);   
    $struct_type = $this->uri->segment(5);
    $tech_id = $this->uri->segment(6);
    $test_id = $this->uri->segment(7);
    $TechName = $query_tech_type->row();
    $side = $query_side->row();

    //Update form
    $hidden = array(
        'Exam' => $exam_id,
        'Struct_id' => $struct_id,
        'Structure_type' => $struct_type,
        'Tech_id' => $tech_id,
        'Test' => $test_id
    );
    ?>

    <a href="<? echo site_url("auh/show_ind_patient/".$exam_id.""); ?> "><img src="<? echo base_url() . "public/holder/back.png"; ?>" border="0" title="Back to test page"></a>

    <?
    echo form_open("auh/update_enkel_test_values/","", $hidden);

    echo "<h2>" . $TechName->Tech_name . "</h2>";

    echo "<div id=\"tech_no\" style=\"display:none\">".$tech_id."</div>";

    if ($struct_id == "1"){
            foreach($query->result() as $rows):
                echo "<h3>M." . $rows->MuscleName . ") (" . $side->SideText.")</h3>";
            endforeach;
            $anatomic_code = $rows->MuscleCode; 
    }

    elseif ($struct_id == "2") {

            foreach($query->result() as $rows): 
                echo "<h3>N." . $rows->NerveName . ") (" . $side->SideText.")</h3>";
            endforeach;
            $anatomic_code = $rows->NerveCode; 
    }

    elseif ($struct_id == "3") {

            foreach($query->result() as $rows):
            if ($rows->NerveCode > 10000 ){
                echo "<h3>N." . $rows->NerveName . ") (" . $side->SideText.")</h3>";        

            }
            else {
                echo "<h3>N." . $rows->NerveName . " (" . $rows->ProxName . " - ";
                    if ($rows->Code < 3000) {
                        echo "m.";
                        }
                    echo $rows->DistName . ") ("  . $side->SideText.")</h3>";
            }
            endforeach;
            $anatomic_code = $rows->NerveCode;
            $ProxAccess = $rows->ProxAccess;
            $DistAccess = $rows->DistAccess;
    }

    elseif ($struct_id == "4"){ 
            foreach($query->result() as $rows):
                $anatomic_code = $rows->NerveCode;
                if ($rows->NerveCode > 10000 ){
                    echo "<h3>" . $rows->NerveName . " (". $side->SideText .")</h3>";    
                }
                else{
                    echo "<h3>N." . $rows->NerveName . " - m." . $rows->MuscleName . " (". $side->SideText .")</h3>";
                }
            endforeach;
    }

查看PHP文档中向后不兼容的更改:

https://secure.php.net/manual/en/migration53.php

https://secure.php.net/manual/en/migration54.php

https://secure.php.net/manual/en/migration55.php

https://secure.php.net/manual/en/migration56.php

仔细研究所有这些内容,然后查找并替换您的代码库。 然后您将处于5.6。 但是不要到此为止! ;-)

https://secure.php.net/manual/en/migration70.php

https://secure.php.net/manual/en/migration71.php

https://secure.php.net/manual/en/migration72.php

您将发现,每次后续升级时需要更改的东西越来越少。 5.2至5.3和5.4可能涉及最多的工作。

您应该尝试安装7.2版本,原因是5.6当前仅在开发安全修复程序,并且从2019年1月1日起不再受支持。请在此处查看此链接:

https://secure.php.net/supported-versions.php

另外,您可以升级Codeigniter安装。 我不知道您使用的是哪个版本的codeigniter,但是您应该下载最新版本并遵循其指南:

https://www.codeigniter.com/userguide3/installation/upgrading.html

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM