HTTP 500 Error bei Fehler in PHP Script

Status
Für weitere Antworten geschlossen.

ahatius

Benutzer
Mitglied seit
22. Okt 2011
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen

Ich wollte mir, damit ich unterwegs auf mein Smartphone streamen kann, ein eigenes Portal programmieren wo ich meine Serien durchsehen kann, und mit einem Klick in ein temporäres Verzeichnis kopieren lassen kann um es dann direkt streamen zu können.

Nun habe ich aber festgestellt dass meine Synology Box immer einen 500er Fehler erzeugt, sobald das PHP Script einen Fehler enthält, was das debuggen ungemein schwierig macht. Kann mir da jemand sagen welche PHP / Apache Konfiguration ich ändern muss, damit ich PHP Fehlermeldungen angezeigt kriege?

Vielen Dank schonmal
Ahatius
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
die Anzeige der PHP Fehler sollte man im DSM in den Optionen von PHP aktivieren
 

ahatius

Benutzer
Mitglied seit
22. Okt 2011
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Vor lauter Suche nach .ini Files hab ich gar nicht daran gedacht mal im DSM selber zu suchen :S

Ich danke dir, jetzt klappts ;)
 

ahatius

Benutzer
Mitglied seit
22. Okt 2011
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Hab da gleich noch eine Frage bezüglich der PDO Komponente. Die sollte ja standardmässig dabei sein, allerdings erhalte ich die Fehlermeldung "Call to a member function prepare() on a non-object in /volume1/web/class/portal.class.php on line 13" wenn ich versuche ein prepared Statement abzusetzen. Kann da jemand weiterhelfen? Habe bereits den eintrag extension=pdo_pgsql.so hinzugefügt und apache neugestartet, allerdings erhalte ich immer noch die Fehlermeldung.

Datenbankverbindung
PHP:
class core {
    public function __construct() {
        $db = new PDO('pgsql:dbname=portal host=localhost', 'admin', 'passwort');
    }
}

Klasse für Benutzerverwaltung
PHP:
<?php

class portal extends core {
    public function insertUser($username, $password) {
        $salt = $this->generateSalt();
        $password = $this->hashPassword($password, $salt);
        
        $sql = "INSERT INTO
                    user (username, password, salt)
                VALUES
                    ?, ?, ?";
        
        $stmt = $this->db->prepare($sql);
        
        $stmt->bindParam(1, $username);
        $stmt->bindParam(2, $password);
        $stmt->bindParam(3, $$salt);
        
        if(!$stmt->execute()) {
            return 0;
        } else {
            return 1;
        }
    }
    
    public function getPasswordHash($userid) {
        $sql = "SELECT
                    password
                FROM
                    user
                WHERE
                    userid = ?";
        
        $stmt = $this->db->prepare($sql);
        
        $stmt->bindParam(1, $userid);
        
        if(!$stmt->execute()) {
            return 0;
        }
        
        $password = $stmt->fetch();
        
        return $password;
    }
    
    public function getUserId($username) {
        $sql = "SELECT
                    userid
                FROM
                    user
                WHERE
                    username = ?";
        
        $stmt = $this->db->prepare($sql);
        
        $stmt->bindParam(1, $userid);
        
        if(!$stmt->execute()) {
            return 0;
        }
        
        $userid = $stmt->fetch();
        
        return $userid;
    }
    
    public function generateSalt() {
        $salt = substr(str_pad(dechex(mt_rand()), 8, '0', STR_PAD_LEFT), -8);
        
        return $salt; 
    }
    
    public function hashPassword($password, $salt) {
        $password = $salt . (hash('whirlpool', $salt . $password));
        
        return $password;
    }
    
    public function comparePassword($password, $hash) {
        
    }
}
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Call to a member function prepare() on a non-object...

heisst normalerweise dass du versuchst auf eine Klassenmethode zuzugreifen ohne zuvor die Klasse mittels new initialisiert zu haben. Erst der new-Operator macht aus einer Klasse ein Objekt
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat