Avatar billede durd Nybegynder
13. januar 2004 - 00:15 Der er 21 kommentarer og
2 løsninger

Webmail (popper)

Jeg har installeret Popper webmail og får følgende fejl når jeg forsøger at starte det op efter jeg har oprettet mysql db osv.

Fatal error: Cannot redeclare print_array() in D:\webs\limer.dk\mail\class.mimepart.inc.php on line 587

Hvad kan dette skyldes? Mangler der evt. at blive installeret et eller andet på apache php serveren?
Avatar billede durd Nybegynder
13. januar 2004 - 00:46 #1
Jeg kan også formulere det på en anden måde. Er det kun mig der ikke kan installere popper webmail på min windows apache maskine med php?

http://popper.ractive.ch/popper/
Avatar billede Slettet bruger
13. januar 2004 - 02:26 #2
Jeg kender ikke lige popper, men fejlmeldingen lyder som om det kan ordnes ved at lave nogle require() eller include() om til require_once() eller include_once()
Avatar billede durd Nybegynder
13. januar 2004 - 12:54 #3
Det hjælper ikke noget.
Avatar billede Slettet bruger
13. januar 2004 - 18:16 #4
Sikker på det?

Fejlen betyder, at scriptet prøver at definere en funktion, som allerede er blevet defineret. Det kan man ikke, og derfor kommer der en fejl.

Det kan ske på nøjagtig 2 forskellige måder:

1) Funktionen er defineret mere end 1 sted. Dette vil være en meget grov fejl, og er ikke ret sandsynligt. Det kan rettes ved at lave koden om, så de to funktioner har forskelligt navn, og der skal også rettes, hvor funktionen bliver brugt.

2) Filen der definerer funktionen bliver inkluderet mere end 1 sted. Dette er det mest sandsynlige. Det kan rettes ved at bruge include_once og require_once.
Avatar billede Slettet bruger
13. januar 2004 - 18:17 #5
Og nej. Denne fejl fremkommer ikke bare fordi du mangler at installere noget på serveren.
Avatar billede durd Nybegynder
13. januar 2004 - 19:13 #6
Så er det altså den veldokumenterede popper mail der er noget galt med fra "fabrikken" :(

ØV! Den så ellers lige så god ud den webmail! :(
Avatar billede Slettet bruger
13. januar 2004 - 20:34 #7
Her er et fix, der burde virke. Find disse linier i class.mimepart.inc.php

        function print_array($array) {
                foreach($array as $key => $val) {
                        echo("$key -> $val<br>");
                }
        }

Og ret dem til:

/*
        function print_array($array) {
                foreach($array as $key => $val) {
                        echo("$key -> $val<br>");
                }
        }
*/

Fejlen var nemlig den mest usandsynlige: funktionen blev faktisk erklæret to gange. (Den bliver også erklæret et tredje sted, men der er den en del af en anden objektklasse, så det gør ikke noget.)
Avatar billede durd Nybegynder
13. januar 2004 - 22:31 #8
Okay så er det rettet!

Nu får jeg så denne besked:

Fatal error: Cannot redeclare db_query() in D:\webs\limer.dk\popper\class.db_tool.inc.php on line 92

Det ser ud som om det fortsætter hvor det slap :(
Avatar billede Slettet bruger
14. januar 2004 - 00:03 #9
Tilsvarende. Lige som før skal der /* og */ uden om denne:


        function db_query($query) {
                return mysql_query($query);
        }
Avatar billede Slettet bruger
14. januar 2004 - 00:04 #10
Bagefter vil jeg sende en fejlrettelse til vedligeholderne.
Avatar billede durd Nybegynder
14. januar 2004 - 17:25 #11
Så kommer der den her fejl:

Warning: link_db(D:/webs/limer.dk/../popper.inc.php): failed to open stream: No such file or directory in D:\webs\limer.dk\popper\class.db_tool.inc.php on line 82

Fatal error: link_db(): Failed opening required 'D:/webs/limer.dk/../popper.inc.php' (include_path='.;c:\php4\pear') in D:\webs\limer.dk\popper\class.db_tool.inc.php on line 82
Avatar billede Slettet bruger
14. januar 2004 - 21:20 #12
Har du flyttet popper.inc.php op i mappen over selve din webrod, som der står i INSTALL at du skal?
Avatar billede durd Nybegynder
14. januar 2004 - 21:33 #13
Ja det har jeg men det ændrer ikke noget :(
Avatar billede Slettet bruger
14. januar 2004 - 21:58 #14
Det vil sige, at filen ligger her: D:/webs/popper.inc.php ?

Så lyder det mystisk, at du får en "No such file or directory"
Avatar billede durd Nybegynder
16. januar 2004 - 19:54 #15
WHAAAT!??? Nu får jeg loginskærmen frem :) :) :) :) :)

Sandbox >> DU ER GENIAL!!!

Nu har jeg bare et andet problem. Jeg kan ikke importere databasen vha. den fil man kan downloade på siden. Det er kun noget af databasen som bliver oprettet.

Jeg får derfor denne fejl når jeg prøver at logge ind
:
The database could not be opened
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Jeg har sat 50 points mere på højkant da det begyndet at gribe om sig..
Avatar billede Slettet bruger
16. januar 2004 - 20:27 #16
Hvor meget har du rettet i popper.inc.php?

<?php
        $host = "localhost";
        $user = "username";
        $pass = "yourpassword";
        $dbname = "nameofthedatabase";
?>

Host-linien skal med 99,9% sikkerhed IKKE ændres. Der skal stadig stå localhost. Den eneste undtagelse er, hvil MySQL kører på en anden maskine end selve webserveren.

user og pass skal være for en bruger, der findes i MySQL, og det er ikke nødvendigvis samme brugernavn og password, som på det normale system.

Og dbname skal naturligvis sættes til navnet på din database.
Avatar billede durd Nybegynder
16. januar 2004 - 21:32 #17
De oplysninger er rigtige nok. Det der er problemet er, at jeg ikke kan logge ind på mysql serveren. jeg får en mysql fejl og det skyldes at når jeg i min phpMyAdmin importerer filen "popper.mysql", så får jeg en sql fejl og alle tabeller når derfor ikke at blive oprettet.

Den ser sådan her ud:
http://www.limer.dk/popper/popper.mysql

Der må være et eller andet galt med den :(
Avatar billede durd Nybegynder
16. januar 2004 - 21:44 #18
Jeg har taget et screenshot af fejlen hvis det evt. kan hjælpe:

www.limer.dk/popper/phpmyadmin_fejl.JPG
Avatar billede Slettet bruger
16. januar 2004 - 23:39 #19
OK, check er et reserveret ord i MySQL, så når man vil bruge det som et feltnavn, er man nødt til at escape det. Det gøres ved at skrive det i backticks. (Nej, jeg aner ikke om de små flueklatter har et dansk navn.) Backtick findes normalt på Shift+[tasten til venstre for backspace]

Ret linien i popper.mysql til:

  `check` char(32) default NULL

Der er også nogle steder i class.popper.inc.php, der skal rettes til. Alle steder skal der bare tilføjes en backtick før og efter ordet check i linien:

Linie 1626: $query = "INSERT INTO confirmations (user_id, `check`) VALUES ('$this->userid', '$check')";

Linie 1649: $query = "SELECT user_id FROM confirmations WHERE `check`='$check'";

Linie 1658: $query = "DELETE FROM confirmations WHERE `check`='$check'";
Avatar billede durd Nybegynder
18. januar 2004 - 22:15 #20
Okay det virkede :) Nu kan jeg inkludere "popper.mysql". Jeg er MEGET inponeret over din viden sandbox.

Det mærkelige er bare at jeg stadig får en fejl når jeg forsøger at oprette en bruger eller logge ind. Det er den herunder:

The database could not be opened
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Jeg har hævet til 150 points..
Avatar billede durd Nybegynder
02. marts 2004 - 11:13 #21
Jeg fandt selv ud af resten af fejlene ved at se på soundforge's forums. Det var fejl i programmeringen fra udviklernes side. Kom med et svar inden én uge sandbox og du skal få halvdelen af de udloddede points. Hvis ikke trækker jeg dem tilbage. Tak for hjælpen!
Avatar billede Slettet bruger
02. marts 2004 - 12:49 #22
Godt du fandt ud af det.
Avatar billede durd Nybegynder
12. marts 2004 - 21:10 #23
Endnu engang tak for den gode hjælp! Her er points!
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