11. september 2007 - 01:13Der 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:
/* 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];
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?
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?
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...
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.
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")
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.
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.