Installation + Sprachdatei

Hi,

Als ich Elgg installieren wollte und einen "Data Directory"-Ordner anlegen musste tat ich das, doch weil dieser nicht im Installationsverzeichnis liegen darf habe ich einen neuen Ordner (elgg) erstellt und sämtliche Dateien dort hin ein verschoben und daneben noch einmal das Verzeichnis "data" erstellt, doch dann funktionierte gar nichts mehr und auf meiner Seite stand:

"Warning: error_log() has been disabled for security reasons in /users/connections/www/elgg/engine/lib/elgglib.php on line 1073


Warning: error_log() has been disabled for security reasons in /users/connections/www/elgg/engine/lib/elgglib.php on line 1073

Warning: error_log() has been disabled for security reasons in /users/connections/www/elgg/engine/lib/elgglib.php on line 1073

Warning: error_log() has been disabled for security reasons in /users/connections/www/elgg/engine/lib/elgglib.php on line 1073

Fatal Error.

An unrecoverable error has occurred and has been logged. Contact the site administrator with the following information:

Exception #1345392785."


Anschließend bat ich im Forum des Webhosters um Hilfe und mir wurde dieser Thread gezeigt, mein Code-Abschnitt sah ähnlich wie der des Typen in dem Thread aus, nähmlich so:

 

"function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) {

$error = date("Y-m-d H:i:s (T)") . ": \"$errmsg\" in file $filename (line $linenum)";

switch ($errno) {
case E_USER_ERROR:
error_log("PHP ERROR: $error");
register_error("ERROR: $error");

// Since this is a fatal error, we want to stop any further execution but do so gracefully.
throw new Exception($error);
break;

case E_WARNING :
case E_USER_WARNING :
case E_RECOVERABLE_ERROR: // (e.g. type hint violation)
error_log("PHP WARNING: $error");
break;

default:
global $CONFIG;
if (isset($CONFIG->debug) && $CONFIG->debug === 'NOTICE') {
error_log("PHP NOTICE: $error");
}
}

return true;
}

/**
* Display or log a message.
*
* If $level is >= to the debug setting in {@link $CONFIG->debug}, the
* message will be sent to {@link elgg_dump()}. Messages with lower
* priority than {@link $CONFIG->debug} are ignored.
*
* {@link elgg_dump()} outputs all levels but NOTICE to screen by default.
*
* @note No messages will be displayed unless debugging has been enabled.
*
* @param string $message User message
* @param string $level NOTICE | WARNING | ERROR | DEBUG
*
* @return bool
* @since 1.7.0
* @todo This is complicated and confusing. Using int constants for debug levels will
* make things easier.
*/"

Darauf kommentierte ich einige "error_log"s aus und jetzt steht auf meiner Webseite: 

"Fatal Error.

An unrecoverable error has occurred and has been logged. Contact the site administrator with the following information:

Exception #1345660543."

 

Ich verstehe nicht was ich jetzt tun sollte, weiß da jemand besser Bescheid als ich ?

Und wenn ich die Installation-Tortur vollendet habe würde ich Elgg gerne auf deutsch benutzen doch alle Links die ich zur deutschen Sprachdatei gefunden habe sind veraltet, weiß jemand wo ich daran kommen kann ?

  • Erst mal zu Deiner letzten Frage. Es gibt ein aktuelles deutsches Sprachpaket: http://community.elgg.org/plugins/788318/r9/elgg-18-german-language-pack.

    Die genaue Ursache für den error log-Fehler kann ich nicht benennen. Ich tippe darauf, dass eventuell mit den Zugriffsrechten für das elgg-Verzeichnis was nicht stimmt, d.h. dass das Verzeichnis zu "offen" ist. Eventuell liegt das Problem auch an den Zugriffsrechten für das Datenverzeichnis (siehe mehr dazu weiter unten). Schreibberechtigung für alle ist ein Grund, warum der Server aus Sicherheitsgründen den Zugriff komplett blockiert, da "alle" innerhalb / unterhalb des www-Verzeichnisses wirklich alle sind (Zugriff über Internet). Wann tritt der Fehler denn bei der Installation auf?

    Es sollte auf keinen Fall notwendig sein, irgendwelche error logs im Code auszukommentieren. Da muss bei der Installation was nicht richtig funktionieren.

    Wenn Du Elgg innerhalb eines Unterverzeichnisses in www installierst, mußt Du auch die RewriteBase-Variable im .htaccess-File von Elgg entsprechend setzen:

    RewriteBase /elgg/

    Ansonsten funktionieren die Rewrite-Regeln nicht richtig. Zur Erzeugung von .htaccess kannst Du htaccess_dist zu .htaccess kopieren und dann die Änderung vornehmen. Dann ist die richtige Einstellung schon zu Beginn der Installation vorhanden.

    Datenverzeichnis: das Datenverzeichnis muss schreibbar sein, damit Daten abgelegt werden. Das Datenverzeichnis muss nicht nur außerhalb des Elgg-Installationsverzeichnis liegen sondern außerhalb des Document-Root-Verzeichnisses (was das gleiche sein kann aber nicht immer ist). Bei Dir ist "Document root" gleich

    /users/connections/www

    das Elgg-Installationsverzeichnis ist

    /users/connections/www/elgg

    Du solltest das Datenverzeichnis beispielsweise hier anlegen

    /users/connections/data

  • Vielen Dank für den Link.

    Ich komme erst gar nicht dazu es zu installieren, ich tippe die URL (http://urlmeinerkünftigencommunity/elgg/) einfach oben in der Adresszeile ein und schon wird mir die Fehlermeldung angezeigt.

    Also soll ich neben Rewrite Base / einfach " elgg/ " schreiben ?

    Wie meinst du das mit dem htaccess und htaccess_dist, soll ich den Inhalt von htaccess_dist in htaccess reinkopieren ?

    Aber wie kann ich das Datenverzeichnis dorthin kriegen, mittels Filezilla oder einem MySQL-Server ?

     

  • Damit Elgg richtig funktioniert (und auch RewriteBase) muss Du sicherstellen, dass Dein Server einige Voraussetzungen erfüllt: es muss das mod_rewrite Modul für den Webserver (Apache funktioniert wohl noch am einfachsten) installiert und aktiv sein. Dann muss in der Konfiguration des Webservers der Parameter "AllowOverride All" zumindest für das Elgg-Installationsverzeichnis gesetzt sein. Falls Du nicht sicher bist, ob dies auf Deinem Webserver zutrifft, frag beim Support Deines Webhosters nach.

    Wenn diese Vorraussetzungen erfüllt sind, und Du Elgg in ein Unterverzeichnis installieren willst (z.B. www/elgg/), dann musst Du in .htaccess die Zeile

    RewriteBase /elgg/

    einfügen. Zum manuellen Erzeugen von .htaccess kannst Du entweder htaccess_dist einfach umbenennen oder eine Kopie davon anlegen. Der Name ".htaccess" (mit Punkt am Anfang) ist halt wichtig. Elgg legt die Datei bei der Installation auch nur durch Kopieren von htaccess_dist an. Allerdings mußt Du .htaccess halt sebst generieren, damit Du die Änderung bei RewriteBase machen kannst. In der Datei ist schon ein Beispiel beschrieben, wie RewriteBase auszusehen hat.

    Die Frage ist allerdings, ob Du Elgg überhaupt noch in ein Unterverzeichnis installieren willst. Du hattest ja das Verzeichnis Elgg nur wegen des Konflikts mit dem Datenverzeichnis angelegt. Wenn es Dir lieber ist, auf Deine Seite direkt mit http://deine.url/ zuzugreifen, entpacke die Dateien des Zip-Files direkt in das www-Verzeichnis. Dann brauchst Du das Verzeichnis elgg nicht mehr und mußt RewriteBase nicht in .htaccess setzen (das mod_rewrite Modul und "AllowOverride All" sind aber trotzdem notwendig).

    Das Datenverzeichnis ist zu Beginn leer. Du mußt einfach nur ein Verzeichnis anlegen, z.B. "data" und dann bei der Elgg-Installation den Pfad auf dem Server zu diesem Verzeichnis angeben. Du hast bestimmt irgendeinen Dateimanager im Adminzugang zu Deinem Webspace, beispielsweise mit CPanel oder Plesk, mit dem Du das Verzeichnis anlegen kannst. "www" ist das Verzeichnis, das über das Internet zugänglich ist - notwendig für die Elgg-Installation aber nicht empfehlenswert für das Datenverzeichnis. Daher lege das Verzeichnis eine Ebene höher parallel zu "www" an. Das Datenverzeichnis hat außerdem nichts mit MySQL oder der Elgg-Datenbank zu tun. Im Datenverzeichnis werden Dateien der Seiten-Mitglieder abgelegt (z.B. Profilbilder, sonstige hochgelade Bilder, Videos usw.).

    Die MySQL-Datenbank für Elgg mußt Du selbst anlegen (beispielsweise über den Admin-Zugang Deines Webspaces mit phpMyAdmin oder einem ähnlichen Tool).

  • Achso, das werde ich tun.

    Ist es denn egal wo genau ich diese Zeile im .htacces einfüge ?

    Das klingt plausibler.

    Wozu man es braucht hatte ich verstanden.

    Ich habe einen solchen zumindest noch nicht gefunden, mein Webhoster ist Square7.ch, doch ich werde dort lieber noch mal nachfragen. Also geht das nicht mit einer MySQL-Datenbank (ich habe bereits eine angelegt) ?

     

  • "AllowOverride All"

    Also ist das die 777-Berechtigung ?

  • Ich war im Urlaub, deshalb eine etwas verspätete Antwort:

    In .htaccess gibt es schon einen Beispieleintrag für die Konfiguration von RewriteBase. Der Eintrag ist nur auskommentiert. Am besten an der Stelle, an der der Eintrag ist, die Zeile einfügen.

    Du brauchst eine Mysql-Datenbank für Elgg. Das Datenverzeichnis ist nur zum Speichern von Dateien. Alle anderen Daten (Benutzer-Daten, Kommentare, Text, Einstellungen von Plugins etc.) werden in der Datenbank gespeichert.

    AllowOverride All ist eine Konfigurationsoption des Apache Webservers und sollte in dessen Konfiguration gesetzt werden. Frag am besten Deinen Webhoster. Diese Einstellung ist notwendig, damit die .htaccess-Datei richtig funktioniert. Das hat nichts mit der Dateiberechtigung 777 zu tun.

  • Kein Problem.

    "

    #RewriteBase /elgg/

    # In for backwards compatibility
    RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING}
    RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING}
    RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1


    RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING}

    RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING}

    RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING}

    RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2
    RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4

    RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php
    RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php


    # rule for rewrite module test during install - can be removed after installation
    RewriteRule ^rewrite.php$ install.php

    # Everything else that isn't a file gets routed through the page handler
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2 [QSA]


    </IfModule>"

     

    Also soll ich das zwischen der "RewriteRule..."-Zeile und "</IfModule>" einfügen ?

    Die ist auch vorhanden, soll ich dort also eine neue Tabelle namens "data" erstellen ?

    Ok.

  • In .htaccess musst Du keine Anpassungen bzgl des Datenverzeichnisses vornehmen. Wie ich schon versucht habe zu erklären, muss das Datenverzeichnis, dass Du anlegen mußt, nur außerhalb des für Internet-Zugriffe freigegeben Verzeichnisses liegen, damit die Daten nicht für jedermann zugänglich sind.

    In .htaccess mußt Du nur die Zeile anpassen, die die RewriteBase für Deine Installation festlegt, fallst Du Elgg in ein Unterverzeichnis des Document Root-Ordners auf Deinem Server installieren willst. Es ist bereits eine auskommentierte RewriteBase-Zeile vorhanden. Du mußt nur das Kommentarzeichnen entfernen und sie entsprechend anpassen.

    Also:

    /users/connections/www ist das Document Root-Verzeichnis Deiner Domain auf dem Server. Zugriff möglich im Browser via http://urlmeinerkünftigencommunity. Entweder Du kopierst Die Elgg-Installationsdaten da hinein und es sind keine Anpassungen in .htaccess notwendig. Oder falls Du die Elgg-Installationsdaten in /users/connections/www/elgg kopierst ist der Zugriff auf Deine Seite im Browser mit http://urlmeinerkünftigencommunity/elgg/ möglich. In diesem Fall mußt in .htaccess die Zeile

    RewriteBase /elgg/

    vorhanden sein - such einfach nach "RewriteBase /elgg/" und entferne das # am Zeilenanfang. Falls Du statt "elgg" einen anderen Namen wählst, dann passe die Zeile entsprechend an.

    Das Datenverzeichnis muss außerhalb von /users/connections/www/ liegen. Ich schlage vor, Du erzeugst einfach das Verzeichnis /users/connections/data.

    Dann lege noch eine Mysql-Datenbank auf dem Server an.

    Nun kann die eigentliche Installalationsroutine von Elgg beginnen:

    Rufe im Browser Deine Domain auf (http://urlmeinerkünftigencommunity oder http://urlmeinerkünftigencommunity/elgg) und folge den Anweisungen.

  • Ok.

    Also ich habe jetzt das "#" entfernt.

    Die ist bereits vorhanden, doch muss ich das Datenverzeichnis nun per MySql anlegen oder wie erstelle ich das ?

  • Das Datenverzeichnis ist ganz einfach ein ganz normales Verzeichnis, das Du auf Deinem Server anlegen mußt. Ich kann Dir nicht genau sagen, wie Du das Verzeichnis anlegen kannst, da ich nicht weiss, was für Tools Du auf Deinem Server zur Verfügung hast. Ich würde vorraussetzen, das Du irgendeinen Dateimanager im Administrationsbereich Deines Serves hast. Andernfalls kannst Du das Verzeichnis auch mit einem Ftp-Client anlegen. Wenn Du nicht weißt, welche Tools Du zur Verfügung hast, dann frage am besten mal den Support Deines Webhosters.

German Support Group

German Support Group

The German support group within the Elgg community.