Avatar billede askgaard Nybegynder
11. marts 2008 - 23:50 Der er 14 kommentarer

Omskrivning af side fra php 4 - php 5

Hej.
Jeg har en side liggende på et webhotel, og denne side er skrevet i php 4. Nu har webhotellet i mellemtiden opgraderet deres php version til 5, og det gør, at min side ikke kan køre ordentligt.
Hvor stor forskel er der egentlig på de to versioner, og hvor meget vil der skulle ændres i programmeringen af siden?
Er lidt på bar bund med php programmering. Kan ændre småting, men er ikke den store programmør.

Mvh Thomas.
Avatar billede mccookie Seniormester
11. marts 2008 - 23:54 #1
Jamen, jeg tror blot du skal lægge lidt kode herud..... så kan du blive hjulpet videre...
Avatar billede askgaard Nybegynder
12. marts 2008 - 00:00 #2
Det er en komplet cms hjemmeside løsning, så det er godt nok meget kode der skal lægges ud så...
Kan opgraderingen fra ver 4 - ver 5 give så store problemer for en side, der er skrevet til php 4?
Avatar billede jakobdo Ekspert
12. marts 2008 - 08:10 #3
Kører ordentligt eller virker den slet ikke ?
Eller kommer der fejl i enkelte side kald ?
Avatar billede mibu Nybegynder
12. marts 2008 - 09:15 #4
Jeg har oplevet det samme på en side jeg skulle hjælpe med, ham der havde siden, havde valgt at bruge Cmsimple, og efter skift til php5 virkede menuen ikke. Menuen var styret af noget Javascript, men ved henvendelse til webhotellet, fik vi bare besked på, at så var siden nok ikke kompetibel med php5, det diskuterede vi lidt over, uden at komme nogen vegne.
Min ven var efter en måned ved at være moden, til at overveje en helt ny side, men så pludselig en dag, uden varsel, virkede det hele igen. OG HOTELLET KØRER STADIG PHP5.
Jeg har ikke ændret noget, webhotellet siger de heller ikke har, men jeg tror nu mest på mig selv :-)
Avatar billede askgaard Nybegynder
14. marts 2008 - 21:51 #5
Den kommer med følgende fejl.
Fatal error: Cannot redeclare class _php_incomplete_class in /usr/home/dan11356/kontent/cms2/extend.inc.php(28) : eval()'d code on line 2

Og det henviser til følgende

if (!empty($temp)) {
    eval($temp);
}

Har siddet og rodet rundt med det, på en mamb server hjemme, og når jeg slår zend optimzer fra, så virker skidtet godt nok, og der kan den så også køre php 5. Webhotellet siger, at der altid har været zend optimizer på. Jeg kan bare ikke forstå, hvorfor det lige pludselig ikke virker mere.
Avatar billede jakobdo Ekspert
15. marts 2008 - 08:49 #6
Så er spørgsmålet hvad $temp indeholder! :o)
Avatar billede askgaard Nybegynder
15. marts 2008 - 12:51 #7
Og hvordan finder jeg ud af, hvad $temp indeholder?
Avatar billede jakobdo Ekspert
15. marts 2008 - 20:16 #8
En ide var at kalde dette lige inden:
echo 'TEMP : ' $temp . '<br />';
Avatar billede askgaard Nybegynder
15. marts 2008 - 20:57 #9
Hvor præcis ville du sætte det ind? Har forsøgt, men synes ikke rigtig jeg får noget ud af det.

<?php

// $Id: extend.inc.php,v 1.5 2006/04/11 10:40:10 cvsdef Exp $

/*
    Class names with leading "_" are abstract and should not be instantiated directly.
    They can be overridden by extending them by specific site code, but often the default will be used.
    Hence, here we make concrete classes directly from the abstract ones - IF not already made -
    so these can be used by site code...

*/

$temp = "";

foreach (get_declared_classes() as $abs_class) {

    if (preg_match("/^_(\w+)$/", $abs_class, $matches)) {
        $con_class = $matches[1];

        if (!class_exists($con_class)) {
            $temp .= "class ${con_class} extends ${abs_class} { }\n";
        }

    }
}

if (!empty($temp)) {
    eval($temp);
}

// $Log: extend.inc.php,v $
// Revision 1.5  2006/04/11 10:40:10  cvsdef
// no message
//
// Revision 1.4  2006/01/11 08:47:29  cvsdef
// *** empty log message ***
//
// Revision 1.3  2004/12/03 08:59:12  ar
// added and corrected CVS keywords
//

?>
Avatar billede jakobdo Ekspert
15. marts 2008 - 22:15 #10
Du siger at det fejler i denne linje:

if (!empty($temp)) {
    eval($temp);
}

Så ville det jo være smart at se hvad $temp indeholder lige inden, hvilket kunne gøres på følgende måde:

echo 'DEBUG! Temp : ' . $temp . '<br />';
if (!empty($temp)) {
    eval($temp);
}
Avatar billede askgaard Nybegynder
16. marts 2008 - 00:22 #11
Det gav følgende resultat.

DEBUG! Temp : class _PHP_Incomplete_Class extends __PHP_Incomplete_Class { } class _PHP_Incomplete_Class extends __PHP_Incomplete_Class { } class db extends _db { } class input extends _input { } class imgfile extends _imgfile { } class webeditor extends _webeditor { } class menu extends _menu { } class pages extends _pages { } class cache extends _cache { } class security extends _security { } class settings extends _settings { } class system extends _system { } class urlmanager extends _urlmanager { } class language extends _language { } class admin_translations extends _admin_translations { } class flash extends _flash { } class errorhandler extends _errorhandler { }

Fatal error: Cannot redeclare class _php_incomplete_class in /usr/home/dan11356/kontent/cms2/extend.inc.php(28) : eval()'d code on line 2

Det der undrer mig rigtig meget er, at siden har kørt, og min udbyder påstår, at der ikke er blevet ændret noget som helst. Forstår det virkelig ikke.
Avatar billede jakobdo Ekspert
16. marts 2008 - 21:31 #12
Det blev jeg desværre ikke meget klogere af! :o(
Avatar billede askgaard Nybegynder
16. marts 2008 - 22:29 #13
:-) Nej. Og det gjorde jeg absolut heller ikke.
Tager problemet op med min udbyder igen i morgen, og så må de altså finde en løsning på det problem. Siden er kodet proffesionelt, og den har virket. Der er intet blevet ændret i kodningen, og ingen filer er fjernet, så det kan komme fra deres side af.
Håber det giver en løsning på problemet.
Avatar billede jakobdo Ekspert
11. april 2008 - 12:19 #14
Fik du løst dit problem ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester