Avatar billede sneska Nybegynder
06. juni 2012 - 14:43 Der er 18 kommentarer og
1 løsning

ERROR#Deprecated: Assigning the return value of new by reference is deprecated

Jeg har for nyligt fået windows 7 og har hentet ny version af xampp. Jeg får gentagne fejl i min kode som (ikke var på vista med ældre version af xampp/php);

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80

Notice: Undefined index: pageid in C:\xampp\htdocs\cmssne\includes\template.class.php on line 11

Jeg er godt klar over hvad depricated betyder, men aner ikke hvad fejlen præcist går på.

Jeg har lidt kode som giver disse fejl :)
index http://codepad.org/kgL8r4BY
template.class http://codepad.org/LhWO0aIe

Håber der nogen der kan forklare grunden til fejl beskederne :)
Avatar billede jakobdo Ekspert
06. juni 2012 - 14:49 #1
Nu viser du ikke koden til config.php

Men i din templates.class.php, har du:

if(mysql_real_escape_string($_REQUEST['pageid']==$row['page_id'])){

Er det ikke forkert?

Du tjekker om 2 værdier er == hinanden og smider resultatet ind i mysql_real_escepa_string.
Det vil sige du escaper TRUE eller FALSE.
Avatar billede olebole Juniormester
06. juni 2012 - 15:05 #2
<ole>

"Undefined index ..." tyder for mig nærmere på, at pageid ikke er sat - eller at der ikke findes et DB-felt med navnet page_id

/mvh
</bole>
Avatar billede sneska Nybegynder
06. juni 2012 - 15:12 #3
Aner det ikke :)) men har fjernet mysql_real_escape_string og det gav samme resultat.

config filen er i xampp http://codepad.org/M9HbETRC
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166

Min config er simpel
<?php
$link=mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('snecms') or die(mysql_error());
?>
Avatar billede sneska Nybegynder
06. juni 2012 - 15:51 #4
#3 Olebole

Har et felt i db http://imm.io/rMh8
Avatar billede olebole Juniormester
06. juni 2012 - 16:01 #5
Så er dén i hvertfald fundet, for så mangler du pageid som GET- eller POST-variabel  =)

Den anden fejl handler ikke om din config fil. Der er tale om filen på denne sti: 'C:\xampp\php\PEAR\Config.php'. Dette (på linje 80) er ikke tilladt længere:

    function Config()
    {
        $this->container =& new Config_Container('section', 'root');
    } // end constructor

- og det gentager sig i linje 166:

    function setRoot(&$rootContainer)
    {
        if (is_object($rootContainer) && strtolower(get_class($rootContainer)) === 'config_container') {
            if ($rootContainer->getName() === 'root' && $rootContainer->getType() === 'section') {
                $this->container =& $rootContainer;
            } else {
                $this->container =& new Config_Container('section', 'root');
                $this->container->addItem($rootContainer);
            }
            return true;
        } else {
            return PEAR::raiseError("Config::setRoot only accepts object of Config_Container type.", null, PEAR_ERROR_RETURN);
        }
    } // end func setRoot

Noget kunne tyde på, at der tale om en forældet Xampp installation
Avatar billede sneska Nybegynder
06. juni 2012 - 18:46 #6
Det lyder mærkeligt at det skulle være en forældet version, har lige hentet xampp i forbindelse med installation af windows 7.

Jeg er ikke med på hvordan jeg får det til virke :D
Avatar billede sneska Nybegynder
06. juni 2012 - 18:53 #7
Når jeg fjerner & fra =& så får jeg ikke den øverste fejl.

Men jeg forstår ikke hvorfor den mener der mangler en definition på pageid, det virkede da fint på vista :))

Måske har jeg hentet en gammel version af xampp
Avatar billede sneska Nybegynder
06. juni 2012 - 19:02 #8
Ok jeg kan godt se der mangler et get parameter på index, for når jeg klikker på et menupunkt fugnere det fint.
Hvordan kommer jeg udenom problemet for index.php har jo ikke nogen ?=x . Nogen bud på en if måske ? :)
Avatar billede olebole Juniormester
06. juni 2012 - 20:23 #9
"Det lyder mærkeligt at det skulle være en forældet version, har lige hentet xampp i forbindelse med installation af windows 7."

Jamen, det siger fejlen jo højt og tydeligt:
"Deprecated: Assigning the return value of new by reference is deprecated".

Det ser ud til, at Pear har bunker af bug reports om netop denne fejl/uhensigtsmæssighed - i hvertfald helt tilbage fra 2008! De er åbenbart rystende ligeglade  :o|

"Men jeg forstår ikke hvorfor den mener der mangler en definition på pageid, det virkede da fint på vista"

Meddelelsen og dens årsag er fuldstændig uafhængigt af OS'et, så dét er i hvertfald ikke årsagen. En nyere PHP-version kan derimod sagtens være skyld i, at du nu får vist den 'fejl', som hele tiden har været der. Der er ikke tale om deciderede fejl, men advarsler om dårlig kodeskik.

En løsning kunne være at skrive denne linje i begyndelsen af koden:

<?php
error_reporting( E_ALL & ~( E_NOTICE | E_STRICT | E_DEPRECATED ) );

Det vil ikke løse dine problemer, men blot gøre dem usynlige. Det svarer dog til at trampe på termometret - eller pille batterierne ud af røgalarmen ... det modsatte af en løsning, men en fristende indbydelse til andre fejl  =)

At undgå Pear kunne være en god idé. Det ville fjerne to af meddelelserne. Meddelelsen om 'Undefined index' fjerner du formodentlig ved at skrive:

if(isset($_REQUEST['pageid']) && mysql_real_escape_string($_REQUEST['pageid']==$row['page_id'])){
Avatar billede sneska Nybegynder
06. juni 2012 - 22:55 #10
#9
If'en virker , mange tak for det :)

Det version af xampp jeg havde før, er downloaded i 2010.

Så fandt jeg dette link med alt muligt godt som jeg ikke tør kaste mig ud sådan umiddelbart. Men så vidt jeg kan forstå er det 3. parts library (PEAR) ifølge http://stackoverflow.com/questions/5362870/assigning-the-return-value-of-new-by-reference-is-deprecated-in , burde man så ikke kunne fjerne det fra xampp ?..
Men det er bare en tanke hehe

Kan du ikke skrive et svar for løsningen på if'en og info om error_reporting :)
Avatar billede sneska Nybegynder
06. juni 2012 - 22:56 #11
Avatar billede olebole Juniormester
06. juni 2012 - 23:20 #12
"burde man så ikke kunne fjerne det fra xampp ?.." >> Det ville få min stemme!  :D

Jeg bruger selv WAMP til hurtige, lokale installationer HeidiSQL til databaseadministration (langt bedre end phpMyAdmin).

Til udvikling af et site, installerer jeg en WAMP på en USB-stick - HeidiSQL er installeret på maskinen. På den måde kan jeg have flere sites i gang på hver sin stick - og sitet ligger altid i roden af serveren.

Man skal op i temmelig store ting, før en 1GB stick bliver for lille, så det er absolut en overkommelig bekvemmelighed  =)
Avatar billede olebole Juniormester
06. juni 2012 - 23:22 #13
- og jeg bruger samme HeidiSQL til at administrere databaser på nettet med. Det er et ganske almindeligt Windows program
Avatar billede sneska Nybegynder
21. juni 2012 - 18:11 #14
Hej Ole, tak for de mange gode tips og tricks.
Jeg har det fint med xampp, har tidligere prøvet wamp men synes bedre om xampp :)
Jeg kom udenom begge fejl og vil blive glad hvis du kan skrive et svar så jeg kan afslutte  :)
Avatar billede olebole Juniormester
21. juni 2012 - 18:52 #15
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)

Det ville være fint, hvis du kunne skrive, hvad løsningen bestod i, så andre med samme problem kan søge sig frem til det fremover  *o)
Avatar billede sneska Nybegynder
22. juni 2012 - 09:42 #16
Ok heheh :)
Den 1. fejl besked gjorde jeg kun som du skrev med rødt i #5, fjernede =& alle de gange det forekom, og det fjernede beskeden som det står i overskriften af spørgsmålet.
Jeg tror i øvrigt det var en warning og ikke fejl besked.

Det andet var en fejl besked; undefined index pageid , som er mit get param. Den tjekkede jeg bare om var sat og det fungerede fint.

Skriv hvis jeg skal vise et eks. :)
Avatar billede olebole Juniormester
22. juni 2012 - 14:21 #17
Ja, det var en warning. En warning kan dog blive fatal på ret kort tid. Warningen bliver smidt, fordi den form for tildeling (=&) er deprecated. Det betyder, at den er på vej ud - og formodentlig vil forsvinde helt fra en af de næste versioner af PHP.

Nej, du behøver ikke skrive eksempler. Skulle nogen finde frem til tråden, må emnet være tygget tilstrækkeligt. Fedt, du fik det løst  =)
Avatar billede sneska Nybegynder
24. juni 2012 - 16:57 #18
Det løste i hvert fald problemet så beskeden ikke blev vist, men jeg ved ikke hvorfor jeg fik beskeden. Som jeg skrev har jeg hentet nye versioner af xampp og alt hvad den indeholde i pakken, så det undre mig at der skulle være gamle filer inkluderet :)
Det er min godt nok stadigt en gåde :(
Iøvrigt har jeg et jquery script der fungere fint online, en kalender der bliver vist når markøren er i fokus i form input felt,men vises ikke på min pc. Men er off topic her, så den gemmer jeg til en anden god gang :)

Mange tak for dine opfølgende kommentarer ! :)
Avatar billede olebole Juniormester
24. juni 2012 - 17:15 #19
Jo, du ved godt hvorfor du fik beskeden. Det har stået klart som bøhmisk krystal siden #5. Der er ikke tale om gamle filer - men dårlig software. Pear er bare ikke fulgt med tiden og bruger gammel, deprecated syntaks ... simple as that  =)

Hvad dit jQuery script angår, så får du sikkert JS-fejl, der fortæller, hvorfor det ikke virker. Hver anden gang, der er problemer med jQuery, bliver folk spammet af JS-fejl - men har slået fejlmeddelelser fra. Og så er det jo komplet umuligt at udvikle webkode  *o)
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