[英]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.