簡體   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