Avatar billede jdjensen Juniormester
22. november 2011 - 11:13 Der er 12 kommentarer og
1 løsning

Tilføje php 5.3 til domæne

Hej,

Jeg har bla. et domæne hos surftown og hvis man i administrationen redigerer domænet skulle der være mulighed for at tilføje en "PHP extension". Den PHP version jeg har brug for så MySQLi virker er ver. 5.3.

Der er i min administration af domænet et tekstfelt der hedder "File Extension" og lige under en dropdown "MIMI Type" hvor jeg kan vælge imellem disse 2:
- application/x-httpd-php-source
- Executable

Hvad skal jeg indtaste i tekstfeltet og vælge i dropdownen for at få php 5.3 på domænet (hvis muligt)?
Avatar billede michael_stim Ekspert
22. november 2011 - 11:58 #1
Du kan ikke bare lige opgradere din php-version, hvis det er det du vil. Men mon ikke surftown er så opdateret at du kan bruge MySQLi, eller har jeg totalt misforstået dig?
Avatar billede webweaver Praktikant
22. november 2011 - 12:06 #2
Det kan du sagtens benytte hos Surftown.
Avatar billede jdjensen Juniormester
22. november 2011 - 12:54 #3
Det er bare meget underligt for min process.php fil virker fint på et andet domæne med php 5.3 men ikke hos Surftown.

Der står i surftown admin at det er PHP5 men ikke om det er PHP5.3+.
http://www.php.net/manual/en/mysqli.installation.php
Avatar billede michael_stim Ekspert
22. november 2011 - 13:07 #4
Det behøver ikke at være 5.3+, det går med hele 5-"serien". Det er bare standard i 5.3+.
Avatar billede jdjensen Juniormester
22. november 2011 - 13:09 #5
Kan også ske det bare er en tilpasning af mit mysqli script der skal til for at det virker:

-----------

function getRefArray($a){
    if (strnatcmp(phpversion(),'5.3')>=0) {
        $ret = array();
        foreach($a as $key => $val) {
            $ret[$key] = &$a[$key];
        }
        return $ret;
    }
    return $a;
}
function iQuery($sql, $arrParams, $arrBindNames=false) {
    $result = new stdClass();
    /* Udvidelse af første version - START */
    $result->num_rows = 0;
    $result->affected_rows = 0;
    $result->insert_id = 0;
    $result->error = '';
    $result->errno = 0;
    /* Udvidelse af første version - END */
   
    $mysqli = @new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DEFAULT_DB);
    if (mysqli_connect_errno()) {
        $result->error = 'Connection failed: '.mysqli_connect_error();
        $result->errno = mysqli_connect_errno(); // Udvidelse af første version
        return $result;
    }
    if ($stmt = $mysqli->prepare($sql)) {
        $arrParams = getRefArray($arrParams); // <-- Added due to changes since PHP 5.3
        $method = new ReflectionMethod('mysqli_stmt', 'bind_param');
        $method->invokeArgs($stmt, $arrParams);   
        $stmt->execute();
        $meta = $stmt->result_metadata();
        if (mysqli_errno($mysqli)) {
            $result->error = mysqli_error($mysqli);
            $result->errno = mysqli_errno($mysqli); // Udvidelse af første version
        }
        if (!$meta) {
            $result->affected_rows = $stmt->affected_rows;
            $result->insert_id = $stmt->insert_id;
        } else {
            $stmt->store_result();
            $params = array();
            $row = array();
            if ($arrBindNames) {
                for ($i=0,$j=count($arrBindNames); $i<$j; $i++) {
                    $params[$i] = &$row[$arrBindNames[$i]];
                }
            } else {
                while ($field = $meta->fetch_field()) {
                    $params[] = &$row[$field->name];
                }
            }
            $meta->close();
            $method = new ReflectionMethod('mysqli_stmt', 'bind_result');
            $method->invokeArgs($stmt, $params);           
            $result->rows = array();
            while ($stmt->fetch()) {
                $obj = new stdClass();
                foreach($row as $key => $val) {
                    $obj->{$key} = $val;
                }
                $result->rows[] = $obj;
            }
            $result->num_rows = count($result->rows); // Udvidelse af første version
            $stmt->free_result();
        }
        $stmt->close();
    }
    else {
        $result->error = mysqli_error($mysqli);
        $result->errno = mysqli_errno($mysqli); // Udvidelse af første version
    }
    $mysqli->close();
    return $result;
}

// Check if users email exist in the database at currect day
$sql = 'SELECT `id` FROM '.$tbl_name.' WHERE `emailaddress`=? AND `date`=CURDATE()';
$result = iQuery($sql, array('s', $_POST['emailaddress']));

if (count($result->rows)>0) {

    // Output
    header('Location: http://www.domain.dk?success=2');

} else {

    // Get values from form
    $arrParams = array('sssss', $_POST['firstname'], $_POST['lastname'], $_POST['emailaddress'], $_POST['answer'], $_POST['newsletter']);
   
        // Insert data into table
        $sql = "INSERT INTO $tbl_name (firstname, lastname, emailaddress, answer, newsletter, date) VALUES (?, ?, ?, ?, ?, CURDATE())";
        $result = iQuery($sql, $arrParams);
       
            // Output
            header('Location: http://www.domain.dk?success=1');

}
Avatar billede michael_stim Ekspert
22. november 2011 - 13:15 #6
Du kan jo starte med at fortælle HVAD det er der ikke virker.
Avatar billede jdjensen Juniormester
22. november 2011 - 13:22 #7
Når jeg trykker "Submit" på formularen kommer der bare en HTTP 500 fejl op. Her skulle den gerne i process.php filen først lave et check på om emailadressen brugeren har indtastet allerede findes i tabellen samme dag, hvis ja så redirectes til http://www.domain.dk?success=2 ellers indsættes værdierne i tabellen og afsluttende redirectes til http://www.domain.dk?success=1.
Avatar billede jdjensen Juniormester
22. november 2011 - 13:23 #8
...ellers indsættes værdierne i tabellen og afsluttende redirectes til http://www.domain.dk?success=1.
Avatar billede michael_stim Ekspert
22. november 2011 - 13:55 #9
Nu gider jeg ikke kigge dit script igennem, da jeg stadig ikke ved hvilken fejl der genereres, men kan da se at du bruger header. Og tænk på at du ikke må skrive noget som helst til skærmen, før du kalder på din header. BOM, enter eller noget.
Avatar billede webweaver Praktikant
22. november 2011 - 19:26 #10
Skriv evt. til Surftown support.

Du kan sagtens "risikere", at dit webhotel ligger på nogle af deres PHP 4 servere. I såfald skriver du lige til dem og siger, at du ønsker at benytte dig af PHP 5 og gerne vil rykkes til en server med det installeret. Det bliver du så uden problemer :)

Det har jeg fået gjort tidligere :)

Hvis det dog står i PHP info eller under kontrolpanelet, kunne det tyde på, at PHP 5 allerede er aktivt og en anden ting forudsager fejlen ...
Avatar billede jdjensen Juniormester
22. november 2011 - 20:29 #11
webweaver: Tak for det - jeg er også ved at tjekke mit hotel igennem igen for at se om der er noget jeg skulle ha' overset. :-) Samtidig får jeg allerede hjælp til scriptet som er ved at blive omskrevet lidt så håber på jeg snart har fundet årsagen. :-)
Avatar billede webweaver Praktikant
23. november 2011 - 18:49 #12
Det lyder godt :)
Avatar billede jdjensen Juniormester
12. januar 2012 - 21:45 #13
Lukker.
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