Manfred on Juli 24th, 2010

In der Regel hat man die Auswahl, ob man eine Anwendung direkt auf Root-Ebene oder in ein Unterverzeichnis installieren möchte. Die Installation in ein Unterverzeichnis hat den “Charme”, dass die Programminstallationen voneinander sauber getrennt sind (z.B. ein Ordner blog, ein Ordner cms, ein Ordner forum, …) und die verschiedenen index.php und index.html u.s.w. nicht miteinander konkurrieren.

Manchmal möchte man jedoch die ursprüngliche Installation verändern, sei es, eine Root-Installation zu einer Unterordnerinstallation machen oder umgekehrt.

Im folgenden möchte ich für Contao die Stellen kurz aufführen, die es bei einer solchen Aktion zu betrachten und ggf. zu verändern gilt:

  1. ggf. Apache Document-Root (zwei Stellen Document-Root und Verzeichnisschutz)
  2. ggf. Apache Rewrite-Anweisungen  (http.conf)
  3. ggf. Plesk vhost.conf  (falls Plesk als Admin-Oberfläche verwendet wird)
  4. ggf. Rewrite-Anweisung in der Datei .htaccess im Hauptordner der Installation (Hauptordner ist hier Root oder der gewählte Unterordner)
  5. Datei /system/config.localconfig.conf  (Parameter: websitePath)

Ich habe die Liste bewußt nicht weiter kommentiert. Die Liste ist als Checkliste gedacht. Beim Lesen muss es bei dem Admin im Kopf klingeln und er muss sofort um die Hintergründe wissen.  Laien sollten die Finger davon lassen.

Tags: , , ,

Manfred on Juli 17th, 2010

Dateien werden in der Regel in der Art

meinDokument.doc
meinText.txt
meinBild.png

abgespeichert, also mit einem Namen und einer kurzen Datei-Extension (∗.doc, ∗.png, ∗.txt).
Anhand der Extension kann Windows leicht erkennen, welches Programm beim Doppelklicken auf den Dateinamen zusammen mit der Datei aufgerufen werden muss, damit diese korrekt angezeigt wird. Im Falle von ∗.doc wäre es z.B. eine Microsoft Word Version bis 2007, bei ∗.txt ein Texteditor und bei ∗.png ein Bildverarbeitungsprogramm.

Windows ist so konfiguriert, dass in der Grundeinstellung die Datei-Extensions (∗.doc, ∗.png, ∗.txt) automatisch nicht angezeigt werden, wenn dieser Dateityp dem System bekannt ist.

Damit geht jedoch dem Anwender eine wichtige Information verloren und führt oft bei Umbenennungen der Datei zu Problemen.

Aktivierung der Anzeige bei Windows Server 2008

Datei Extension anzeigenBeim Betriebssystem Windows Server 2008 kann man die Grundeinstellung für die Anzeige von Dateien verändern, indem man den

  1. Windows Explorer aufruft
  2. sich auf eine Laufwerkskennung (z.B.: Local Disk C:/ ) stellt und
  3. das Dropdown-Menü unter Organize öffnet und dann
  4. die Folder Options verändert.

Tags:

Manfred on Juli 12th, 2010

Ausgangssituation

Domains mit der Verwaltungsoberfläche Plesk 9.3 eingerichtet.

Wenn man für eine Domain einen externen Mailserver verwenden möchte, dann ist der DNS-Eintrag auf den Nameservern entsprechend zu setzen. Dies funktioniert soweit bei E-Mail, die von außerhalb gesendet werden, auch recht gut.

Problem

Wird jedoch auf der Internetseite selbst eine E-Mail an eine interne Adresse versendet, z.B. an  kontakt@meineDomain.de,  so erhält man eine Fehlermeldung der Art

Hi. This is the qmail-send program at n1.meineDomain.de.

I’m afraid I wasn’t able to deliver your message to the following addresses.

This is a permanent error; I’ve given up. Sorry it didn’t work out.

<kontakt@meineDomain.de>:

This address no longer accepts mail.

Lösung

Kein E-Mail Account angelegt

Die Fehlermeldung kommt, weil auf der Domainebene kein E-Mail Account angelegt wurde. Das ist ja aber gerade auch erwünscht und soll so bleiben. Da jedoch die Domain auf diesem Server lokal angelegt ist, versucht das System die E-Mails zuzustellen.

E-Mail Service ist explizit zu deaktivieren

Man muss nocheinmal explizit den Mail-Service deaktivieren.

Also Mail-Settings (E-Mail Einstellungen) anklicken und das Häkchen aus dem Ankreuzfeld nehmen.

Tags: ,

Manfred on Juli 8th, 2010

Problem: Zeitintervall der AWSTATS Statistikaufbereitung zu groß

Oft möchte man sich im Tagesverlauf die auf den aktuellen Tag bezogenen Besucherströme für eine Webseite anzusehen. Leider wird von Plesk die Statistik nur einmal am Tag aktualisiert, so dass es recht unbefriedigend ist, um 15:00 Uhr zu sehen, dass bis 0:05 Uhr (verständlicherweise) nur 20 Besucher auf der Internetseite waren.

Lösung: Cronjob für AWSTATS einrichten

Da bei vielen Servern heutzutage Plesk als Server-Verwaltungsoberfläche eingesetzt wird, möchte ich die Vorgehensweise für Plesk 9.3 beschreiben, um das Aufbereitungsintervall für die Statistik zu verkürzen.

Den Anstoß für die Aufbereitung der AWSTATS-Statistik unter Plesk gibt das Programm

-r-x — —  root root  /usr/local/psa/admin/sbin/statistics

Wie man sehen kann, darf nur der Benutzer ROOT dieses Programm ausführen.
Das ist wichtig zu wissen.
Trägt man bei Plesk bei irgendeinem anderen Benutzer den Cronjob ein, so würde dieser Cronjob ins Leere laufen und nichts würde passieren.

1. Schritt:  Plesk Verwaltungsoberfläche aufrufenPlesk Systembenutzer Root

Rufen Sie zunächst unter dem Menüpunkt HOME die SYSTEM USER auf, und suchen Sie den Benutzer root.

Ein alternativer Zugang zu der Einstellungsmaske ist hierbei
HOME / Settings / Scheduled Tasks

2. Schritt: Neuen Crontab Eintrag anlegenUnter Plesk einen neuen Cronjob fuer AWSTATS anlegen

Eigentlich hat man das Schwierigste, die richtige Stelle für seinen Eintrag zu finden, mit dem 1. Schritt schon erledigt.  Der rechtsstehende Screenshot zeigt den anzulegenden Eintrag.

Um einen neuen Cronjob anzulegen, ist auf den “Add New Tasks” Schaltfläche oben zu klicken.

Cronjob Einstellungen für AWSTATSBei Stunden, Minuten, Tag und Monat einfach die gewünschten Werte in die Felder eintragen und beim auszuführenden Programm

/usr/local/psa/admin/sbin/statistics >/dev/null 2>&1

Tags: , ,

Manfred on Juli 4th, 2010

Fehlermeldung

Warning: mkdir() [function.mkdir]: Permission denied in /var/www/vhosts/yourDomain.de/httpdocs/…/Cache.php on line 271


Problemlösung (mit Haken)
Wenn man PHP als Apache FAST_CGI  Modul aktiviert, dann hat man keine Zugriffsrechtsprobleme mehr, aber gleichzeitig kann der Domainbesitzer NICHT MEHR den ‘safe_mode’ Parameter für seine Domain verändern!

Tags: ,

Manfred on Juli 2nd, 2010

Problem
Beim Abschicken eines Formulars kommt es zu einer SAFE_MODE Fehlermeldung.

Fehlermeldung
Warning: mkdir() [function.mkdir]: SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /var/www/vhosts/domain.de/httpdocs/…/tmp owned by uid 0 in /root/domain.de/httpdocs/verzeichnis/…/Cache.php on line 271

Ein phpinfo() zeigt
safe_mode=On

Hintergrund
Gerade bei virtuellen Hostern wird der PHP-Parameter SAFE_MODE gerne auf ON gesetzt.  Das mag zwar zunächst einmal richtig sein, da man damit den bösen Buben das Leben erschwert, aber im Grunde genommen ist diese Sicherheitseinstellung mehr hinderlich als nützlich.

  1. Die Sicherheitseinstellung bringt nur etwas, wenn der Angreifer PHP verwendet. Weicht er aber dann auf z.B. Perl als Skriptsprache aus, dann bringt diese restriktive Einstellung gar nichts.
  2. Ab PHP-Version 5.3.0 ist die PHP-Einstellung SAFE_MODE als DEPRICATED gekennzeichnet, sollte also nicht mehr verwendet werden.
  3. Die SAFE_MODE=ON Einstellung behindert die PHP-Skripte Verzeichnisse zu erstellen und zu benutzen (die angelegten Verzeichnisse werden dem WWW-Server Benutzer zugeordnet und nicht dem Besitzer der PHP-Skripte)

Lösung

PHP-SAFE_MODE als Domainowner deaktivieren.

Anmerkung: Der Admin eines virtuellen Servers hat die Möglichkeit seinen Kunden das Recht zum PHP SAFE_MODE Management einzuräumen oder auch nicht.

Der Domain-Administrator kann unter dem Menüpunkt WEB HOSTING SETUP den PHP-Parameter ‘save_mode’ für seine Domain verändern (siehe Anmerkung zum virtuellen Server Admin). 

Tags: , ,

Manfred on Juni 30th, 2010

Installationsvorbereitungen
Vor der Programminstallation von Contao 2.9 ist eine MySQL-Zieldatenbank anzulegen. Mit dem Namen dieser Datenbank und einem DB-User mit Passwort ausgestattet, läßt sich dann das Content-Management-System Contao schnell installieren.

Spielt man kein Template ein, so wird bei der Grundinstallation wirklich nur die Tabellenstruktur angelegt. Alle während der Installation eingegebenen Werte werden in der Konfigurationsdatei system/config/localconfig.php permanent hinterlegt, so dass man selbst zu diesem Zeitpunkt der Installation noch keinen einzigen Datenbankeintrag vorfindet.

Contao-GrundtabellenKeine Metadateneinträge
D.h. also, dass Contao zwar ein vollkommen datenbankgetriebenes Contentmanagement-System ist und dennoch selbst keinerlei Datenbankeinträge als Voraussetzung für startbares, laufendes System benötigt.  Das finde ich sehr positiv, bedeutet es doch, dass die Core-Funktionalitäten nicht durch Metadaten in der Datenbank gesteuert werden und sich die Datenbank mehr oder weniger voll auf die Verwaltung des Inhalts beschränkt.

Contaotabellen: Namenskonvention
Die Datenbank selbst kommt dann mit 34 Tabellen aus. Historisch bedingt  (Contao = ehem. TYPOlight) beginnen die Contao-Tabellen mit “TL_”.  Früher oder später will man vielleicht seine eigenen Tabellen in die Datenbank integrieren, weil man ein Plugin-Modul geschrieben hat oder wegen Legacy-Programmtabellen, die man anbinden möchte.  Grundsätzlich kann man dies tun und die Tabellen können dann heißen und mit Tabellenpräfixen jeder Art sein, aber, wenn man die Datenbank-Controller von Contao verwenden möchte, dann sollte man wissen, dass diese Controller nur Tabellen mit dem Präfix ‘tl_’ berücksichtigen.

Administrator anlegen
Der allererste Datenbankeintrag wird dann auch durch das Anlegen eines Administrators verursacht. Dieser erste Eintrag in der Tabelle tl_user ermöglicht es dem Anwender sich als Administrator Zugriff auf die Backend-Verwaltungsoberfläche zu erhalten.

Zur Kennzeichnung, dass es sich um einen Administrator handelt, wird vom Installationsprogramm das Attribut TL_USER.admin = 1 gesetzt.  Es wird dabei kein korrespondierender Eintrag in der Tabelle TL_USER_GROUP angelegt.  Dies ist für mich ein starkes Indiz dafür, dass ein Benutzer, den man derart zum Admin macht, wirklich allumfassende Rechte ohne jede Einschränkung erhält.
Zweiter Admin
Im Backend kann man später unter dem Menüpunkt Benutzerverwaltung/Benutzer übrigens noch weitere Benutzer zum Administrator machen, dies sollte man aber meines Erachtens mit Bedacht tun. Sicherer ist sicherlich, eine Benutzergruppe Backend-Administrator mit recht weitreichenden Rechten anzulegen , die einem Administrator gleichkommen (aber eben doch das eine oder andere Recht nicht zuweisen).
Für die Benutzergruppen wird ein Eintrag in der Tabelle TL_USER_GROUP angelegt und beim Benutzereintrag in der Tabelle TL_USER ist das BLOB-Attribut GROUPS gesetzt.

Demo-Template Daten

Bei der Grundinstallation von Contao kann man sich auch eine Demo-Internetseite vom System einspielen lassen. Es ist durchaus legitim und erforderlich, sich mit dem Demo-Template erst einmal mit dem Content-Management-System Contao vertraut zu machen, aber ich möchte nicht wissen, wieviele das Demo-Template umschreiben/anpassen, einen neuen Admin anlegen und dabei vergessen, den Demo-Admin und die Demo-User zu löschen.

Deshalb:

  • Anwender, die bei der Contao-Installation das Demo-Template mit einspielen, sollten also daran denken, gleich nach dem Anlegen der eigenen Person als Admin, dem User ‘kevin.jones’ die Adminrechte zu entziehen oder zumindest das Passwort zu ändern, ansonsten haben Sie eine große Sicherheitslücke.

Tags:

Manfred on Juni 17th, 2010

Problem

Beim Starten von Netbeans startet die IDE immer zuerst den “scanning projects” Prozess.  Gerade wenn man mehrere Projekte hat bzw. schon hatte, werden diese ALLE, auch die alten Projekte, immer und immer wieder durchsucht, vollkommen unnötigerweise

Das ist recht nervig, da in dieser Zeit die IDE kaum benutzbar ist und geht zu Lasten der CPU-Rechenpower.

Hintergrund

Syncronisation der Sourcen aus dem Projektverzeichnis beim Starten der Netbeans-IDE.

Man kann dieses Scanverhalten deaktivieren, dafür gibt es (inzwischen) ein experimentelles Tool von SUN, aber das Ganze hätte einen Haken: Man arbeitet dann auf unsyncronisierten Sourcen. Der Gedanke ist auch nicht gerade schön und beruhigend.

Mein Workaround

Unter Netbeans ein Pendant zum Workspace-Konzept von Eclipse erzeugen, d.h. für getrennte Projekte jeweils ein eigenes USEDIR-Verzeichnis anlegen und dann die Netbeans-IDE mit einem projektbezogenen –usedir Parameter aufrufen.  Damit kann man die “alten”, zur Zeit uninteressanten Projekte ausblenden und beschränkt die grundsätzlich sinnvolle Syncronisation auf das aktuelle Projekt.

Windows:

netbeans.exe –userdir C:\MyOtherUserdir

Unix:

./netbeans –userdir ~/my-other-userdir

Weiterführende Links:

SUN: Scan on Demand

SUN: FAQ-Alternate userdir

SUN: What is the userdir

Tags:

Manfred on Juni 13th, 2010

TIOBE hat zum zweiten Mal eine TOP Liste der zwanzig angesagtesten Programmiersprachen herausgebracht.

Position Juni 2010 Programmiersprache Anteil
1 Java 18,0
2 C 17,8
3 C++ 10,7
4 PHP 8,9

Siehe auch:
Vollständige TOP-20 Liste von Tiobe

Tags: ,

Manfred on Juni 11th, 2010

Nach einer Neuinstallation von WordPress auf einem Server erhält man oft eine Fehlermeldung dieser Art:

Fatal error: Allowed memory size of 33554432 bytes exhausted

(tried to allocate 1966080 bytes) in /home/dragon/public_html/…

on line 5409

Ursache:

Der maximale Speicherplatz, welches den PHP-Skripten auf dem verwendeten Server zur Verfügung steht, wurde erreicht/überschritten.

Lösung:

Die Datei php.ini auf dem Server suchen (z.B. mittels phpinfo() ) und für den Parameter memory_limit die maximale Speicherbedarfsgrenze von 16M (Defaultwert) erhöhen (z.B. auf 32M, 64M, 96M, …) .

;;;;;;;;;;;;;;;;;;;

; Resource Limits ;

;;;;;;;;;;;;;;;;;;;

memory_limit = 64M ; Maximum amount of memory

; a script may consume (16MB)

Tags: