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