Avatar billede askgaard Nybegynder
11. september 2007 - 01:13 Der er 16 kommentarer og
1 løsning

Fejlmelding. eval()'d code

Hej.

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

Kan ikke rigtig finde fejlen.
Koden extend.inc.php ser således ud:

<?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
//

?>

Nogle der har nogle gode ideer eller input.
Avatar billede nielle Nybegynder
11. september 2007 - 09:10 #1
Har du prøvet at kigge på hvad der er i din $temp lige før at den eval'es?
Avatar billede askgaard Nybegynder
13. september 2007 - 22:55 #2
Har haft kontakt til min udbyder, og de har lavet en opgradering til en nyere php version. Det tyder på, at det er der problemet ligger.
Hvad kan der gøres for, at undgå denne fejl?
Avatar billede nielle Nybegynder
13. september 2007 - 23:03 #3
Har du kigget på værdien af din $temp før at du kalder den? Det er altid den slags steder man først bør kigge efter en eventuel fejl.
Avatar billede askgaard Nybegynder
14. september 2007 - 11:29 #4
Det er ikke mig der har programmeret siden, så jeg er lidt på herrens mark. Hvor kan jeg se værdien af den henne.?
Avatar billede nielle Nybegynder
14. september 2007 - 17:44 #5
Lige før at du prøver at udføre den kan du lave en prøve udskrift:

echo "DEBUG: [$temp]<br>";
if (!empty($temp)) {
    eval($temp);
}
Avatar billede nielle Nybegynder
22. september 2007 - 22:04 #6
Har du fået kigget på det?
Avatar billede askgaard Nybegynder
23. september 2007 - 04:05 #7
Har jeg ikke nået, men vil prøve at kigge på det. Har i samme forbindelse fundet ud af, at min udbyder har opgraderet deres version af php til 5.xx. Kan det have noget at sige i den her forbindelse?
Avatar billede nielle Nybegynder
23. september 2007 - 08:49 #8
Sagtens. Med 5.0 har man bl.a. ændret på nogle standard indstillinger for sikkerheds-mæssige aspekter. Det har man primært gjort fordi at folk misbrugte de mere løse regler til at lave applikationer som siden har vist sig at være vidt-åbne for diverse hacker-teknikker. Sikkerheds indstillingerne er pr. default skærbet og det betyder at en masse programmer som har kørt under mere afslappede forhold nu pludselig fejler...
Avatar billede askgaard Nybegynder
23. september 2007 - 17:19 #9
Det vil med andre ord sige, at min side erfterhånden er ubrugelig, og jeg skal have det hele programmeret om?
Avatar billede nielle Nybegynder
23. september 2007 - 19:47 #10
Det er jo svært at sige uden at kende din kode bedre - som regel kan det nu gøres ved at man laver lidt om i koden.
Avatar billede askgaard Nybegynder
23. september 2007 - 21:04 #11
Nu er jeg ikke så stærk i php programmering. Jeg aner rent faktisk ikke, hvor jeg skal starte eller slutte. Ville meget gerne have lidt hjælp til det, hvis du har mulighed for, at komme med at par guldkorn.
Avatar billede nielle Nybegynder
23. september 2007 - 22:52 #12
Lad os nu bare starte med det aktuelle problem. Hvad kommer der ud af 14/09-2007 17:44:03?
Avatar billede askgaard Nybegynder
23. september 2007 - 23:16 #13
Det ser ud til at virke igen, efter de har rettet nogle fejl i forbindelse med php opgraderingen.
Når jeg nu prøver at oprette f.eks. nye sider i det cms system der er lavet, får jeg følgende fejl:

Error
[error 8] /usr/home/dan11356/kontent/cms2/menu.inc.php (587): Trying to get property of non-object
/usr/home/dan11356/kontent/cms2/template.inc.php (5344): _template->edit_settings()
/usr/home/dan11356/kontent/cms2/template.inc.php (1113): _template->tab_list()
/usr/home/dan11356/kontent/cms2/template.inc.php (1090): _template->edit_form()
/usr/home/dan11356/kontent/cms2/html.inc.php (144): _template->edit()
/usr/home/dan11356/kontent/cms2/page.inc.php (113): _html->content(normal,1)
/usr/home/dan11356/public_html/view.php (55): include("/usr/home/dan11356/kontent/cms2/page.inc.php")


--------------------------------------------------------------------------------

$_GET[]
Array
(
    [template] => normal
    [page_id] => 0
    [create] => Create
)
1

--------------------------------------------------------------------------------

$_POST[]
Array
(
)
1

--------------------------------------------------------------------------------

$_SESSION[]
Array
(
    [sess_template] => normal
    [sess_page_id] => 0
    [sess_menu_id] =>
    [cur_language] => da
    [cur_language_id] => 1
    [cur_browser_mime] => iso-8859-1
    [sec_user_id] => 1
    [sec_system_admin] => 1
    [kontent_cache] => Array
        (
            [valid_language] => Array
                (
                    [1] => 1
                )

        )

)
1
Avatar billede nielle Nybegynder
24. september 2007 - 08:38 #14
Som jeg ser det har du et problem.

Den eksisterende koder er helt klart skrevet af en eller flere professionelle programmører. Dette kan man se klart og tydeligt af strukturen.

Dette betyder

(o) Fordel – Der er sikkert ikke mange steder hvor koden skal tilrettes. Den er nok rimelig "sund" i sin nuværende form.
(o) Fordel – Det er formentligt let at tilrette koden, for de steder hvor der skal rettes er nok ikke spredt ud over det hele.
(o) Ulempe – De har lavet en kompleks struktur (måske lidt for kompleks), hvor at der er inkluderet filer i filer i flere lag – minimum 5 lag ifølge din fejl-meddelelse. Dette betyder at det kan være svært for en ikke-øvet programmør at finde frem til hvor en fil skal rettes.
(o) Ulempe – Filerne er meget store /måske lidt for store), hvor mindst en af dem er over 5000 linjer lang. Igen, dette kan gøre det svært for en ikke-øvet programmør at finde de rigtige steder hvor der skal rettes (og det kræver vist en god editor). Nu er de 5000 linjer ikke nødvendigvis kode – man kan håbe på at meget af den faktisk er kommentarer til koden.
(o) (Ulempe) – Koden er rimeligt avanceret. Dette gør at den bliver svær at læse og forstå for en ikke-øvet programmør. Og det er i hvert fald ikke noget vi kan lave over Eksperten – man skal sidde med koden.

Min konklusion:

1) Det vil tage meeeeget lang tid at omskrive det hele. Og det vil med garanti ikke blive lige så godt som det du havde før at det gik i stykker. Der er lagt mange timer i at udvikle den der kode.
2) Du står dig nok bedst ved at hyre en kompetent programmør til at klare ærterne for dig. Dels tager det nok ikke mange timer, og dels bliver det gjort rigtigt.
Avatar billede askgaard Nybegynder
24. september 2007 - 17:59 #15
Jeg siger mange tak for din hjælp.
Jeg vil forsøge, om det er muligt for mig, at opspore vedkommende, som har skrevet koden. Kan være jeg er heldig.
Avatar billede nielle Nybegynder
01. oktober 2007 - 19:58 #16
Svar?
Avatar billede nielle Nybegynder
07. oktober 2007 - 11:07 #17
Lukketid?
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