Приложение PHP 5.2 с использованием Codeigniter до 6.7 - PullRequest
0 голосов
/ 31 августа 2018

Я дал задание обновить старое веб-приложение PHP, написанное на php 5.2.17 и использующее Codeigniter. При обновлении с PHP 5.2 до 5.6 я столкнулся с некоторыми ошибками. На первый взгляд кажется, что проблемы могут заключаться в использовании старого синтаксиса PHP, а также в некоторых проблемах с Codeigniter. Я никогда не работал с Codeigniter, который делает эту задачу невероятно сложной. Проблемы возникают на странице, где вы можете отредактировать некоторые уже существующие данные о пациенте, а затем отправить новые обновленные данные. В значительной степени CRUD.
Crud прекрасно работал на сервере, поддерживающем> 5.6 PHP, но теперь, когда я перешел на сервер, который поддерживает только <5.6 PHP, у меня возникли эти проблемы. </p>

Первая проблема: на странице формы я получаю эти две ошибки, и данные внутри этих переменных не отображаются на странице. Если я решу отправить новые введенные данные, новые данные также не будут сохранены.

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;
    }

1 Ответ

0 голосов
/ 31 августа 2018

Просмотрите обратно несовместимые изменения в документации 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 только разрабатывает исправления безопасности и больше не будет поддерживаться с 1 января 2019 года. Проверьте эту ссылку здесь:

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

Кроме того, вы можете обновить установку Codeigniter. Я не знаю, какую версию codeigniter вы используете, но вы должны загрузить последнюю версию и следовать их руководству:

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

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...