wordpress: wp-config.php ausserhalb vom document root

Obwohl wordpress eine tolle blog-Software ist, liegen hier alle Dateien innerhalb vom öffentlich Zugänglichen Web-Verzeichnis. Die sensitivsten Daten, wie Benutzername und Passwort der Datenabnk liegen dabei in der Datei: wp-config.php. Zwar kann man diese Datei unter normalen Umständen nicht auslesen, aber bereits eine möglicherweise unentdeckte Server-Misskonfiguration kann den php interpreter deaktivieren und die Daten können im Klartext abgerufen werden.

Continue reading wordpress: wp-config.php ausserhalb vom document root

WordPress: Welches Theme/Plugins wird verwendet?

Wenn man herausfinden will, welches WordPress-Theme und/oder Plugins verwendet werden kann man dies ganz einfach auf der Seite: What WordPress Theme Is That? herausfinden.

Eine weitere Seite ist der WordPress Theme Detector.

Quelle: How to Find Out What WordPress Theme a Site is Using

Maintenance-Seite aufschalten

Während man eine Webseite upgraded, sollten die Leute nicht darauf zugreifen können und stattdessen eine „Maintenance-Seite“ zu sehen bekommen.

Dies geht ganz einfach mittels einer .htaccess Daezi, welche im web-root der Webseite erstellt wird:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_HOST} !10.1.1.10
RewriteRule $ /maintenance.html [R=302,L]

Dabei ist: 10.1.1.10 mit deiner eigenen IP zu ersetzten, damit du während dem upgrade immer noch auf die Seite Zugreifen kannst. 🙂

Nun erstellt man noch die Maintenance-Seite:

<HTML>
  <HEAD>
    <TITLE>Maintenance</TITLE>
  </HEAD>
  <BODY>
    <H1>Down for Maintenance</H1>
    This page is currently down for maintenance. Please come back later.
  </BODY>
<HTML>
Zentrale maintenance Seite
Man kann auch eine Zentrale Maintenance Seite erstellen, falls man z.B. viele VirtualHosts hat und dann auf diese Weiter leiten:

#RewriteEngine on
RewriteCond %{REMOTE_HOST} !10.1.1.10
RewriteRule $ <a href="http://maintenance.example.com/maintenance.html" target="blank">http://maintenance.example.com/maintenance.html</a> [R=302,L]

HTTP Header für Maintenance Seite
Um die Suchmaschinen-Indexer, wie z.B. google nicht zu verwirren sollte die HTTP Status Seite den HTTP Status Code 503 (Service Unavailable) senden. – Ansonsten denkt die Suchmaschine, dass es sich bei der Maintenance Seite um die aktuelle Seite handelt!

Um dies zu Berwerkstelligen, kann man anstelle der maintenance.html eine maintenance.php Seite erstellen und oben folgenden Code einfügen:

$protocol = "HTTP/1.0";
if ( "HTTP/1.1" == $_SERVER["SERVER_PROTOCOL"] )
  $protocol = "HTTP/1.1";
header( "$protocol 503 Service Unavailable", true, 503 );
header( "Retry-After: 3600" );

Die Angabe Retry-After gibt dabei die Zeit an in der die Seite wieder Verfügbar ist (hier: 3600 Sekunden = 1 Stunde).

Quellen

bugzilla: Welche CentOS/RHEL Perl-Module braucht es?

Bugzilla braucht viele perl-module um zu laufen.

Wenn man diese lieber über yum anstatt über CPAN installieren möchte sind folgende nötig:

yum install --enablerepo=rpmforge-extras --disablerepo=base mod_perl mod_perl-devel perl-Apache-SizeLimit perl-Authen-SASL perl-CGI perl-Chart perl-Class-Inspector perl-Daemon-Generic perl-DateTime perl-DateTime-TimeZone perl-DBD-mysql perl-DBI perl-Digest-SHA perl-Email-MIME perl-Email-MIME-Attachment-Stripper perl-Email-Reply perl-Email-Send perl-Encode-Detect perl-File-MimeInfo perl-GD perl-GDGraph perl-GDTextUtil perl-HTML-FormatText-WithLinks perl-HTML-Parser perl-HTML-Scrubber perl-IO-stringy perl-JSON perl-JSON-RPC perl-JSON-XS perl-LDAP perl-libwww-perl perl-List-MoreUtils perl-Math-Random perl-MIME-tools perl-Net-SMTP-SSL perl-PatchReader perl-RadiusPerl perl-SOAP-Lite perl-Template-GD perl-Template-Toolkit perl-Test-Taint perl-TheSchwartz perl-TimeDate perl-URI perl-XML-Twig perl-YAML

Um alle dependencies auflösen zu können ist das rpmforge repository (und ggf. sogar das rpmforge extras repo) zu installieren/aktivieren.

Allerdings sind einige bei neueren Bugzilla-Versionen zu alt und müssen über CPAN installiert werden.

Die perl-module welche (Stand CentOS 6) unbedingt per CPAN installiert werden müssen sind:

perl-Date-Format perl-Email-MIME perl-List-MoreUtils perl-Math-Random-ISAAC

Weitere Info: [https://wiki.mozilla.org/Bugzilla:Prerequisites|Bugzilla:Prerequisites]

Drupal: Nach wechsel des File System Path werden Benutzerbilder nicht mehr angezeigt

Nachdem man bei Drupal den "File system path" unter admin/settings/file-system geändert hat und die Methode auf "private" hat, werden alle Benutzerbilder (avatare) nicht mehr angezeigt, obwohl der neue Pfad noch stimmt.

Stattdessen wird nach dem /system/files/ noch der Webroot angehängt, z.B.: /system/files/var/www/my_site/public_html/files/pictures/picture-123.jpg.

Dies passiert daher, weil in der Datenbank in der Tabelle "users" im Feld "picture" immer der volle Webroot Pfad steht, z.B. eben: "/system/files/var/www/my_site/public_html/files/pictures/picture-123.jpg". Und dieser wird dann zur Laufzeit mit dem, der unter "File system path" angegeben ist ersetzt. Unterscheidet sich dieser Pfad jedoch, funktioniert das ersetzen nicht mehr und Drupal passt den Pfad in der users Tabelle nicht automatisch an, wenn man den File System Pfad ändert.

Deshalb muss man dies noch manuell machen.
Wenn man also nun den File System Pfad von: /var/www/my_site/public_html/ nach: /srv/web/my_site/public_html/ wechselt, kann man in der users Tabelle das folgende SQL statement ausführen:

UPDATE users SET picture = REPLACE(picture,"/var/www/","/srv/web/")

Somit müssten dann die Benutzerbilder wieder korrekt angezeigt werden.

Umleitung auf www Domain

Hat man eine Webseite, sollte diese immer mit und ohne, dass "www" erreichbar sein; d.h. http://example.com/ oder http://www.example.com.

Man sollte sich aber in einem solchen Fall für eine Schreibweise entscheiden und die andere auf diese umleiten um keine Probleme mit Cookies zu kriegen und die Suchmaschinen nicht zu verwirren.
Suchmaschinen-technisch ist dies auch schlecht, da die Suchmaschine dann denken, man mache dies extra um mehr hits zu bekommen und die Seite teilweise im ranking sogar herabstufen!

Achtung, benutze nur eine der folgenden Anweisungen in deinem .htaccess file:

Um alle User so umzuleiten, dass die Seite MIT dem "www." Präfix läuft, benutze diese Einstellung:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ <a href="http://www.%{HTTP_HOST}%{REQUEST_URI}" target="blank">http://www.%{HTTP_HOST}%{REQUEST_URI}</a> [L,R=301]

Um alle User so umzuleiten, dass die Seite OHNE dem "www." Präfix läuft, benutze diese Einstellung:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^ <a href="http://%1%{REQUEST_URI}" target="blank">http://%1%{REQUEST_URI}</a> [L,R=301]

Dies leitet nun alles was NICHT http://www.example.com/ ist nach http://www.example.com/ um. So lässt sich dies auch gut gebrauchen wenn man noch weitere domains hat, die auf dieses Verzeichnis zeigen und man alle zur gleichen Haut-Domain weiter leiten möchte. (:wink:)

Tip: Umleitung direkt in der Server-Konfiguration
Manche CMS, wie z.B. Drupal ersetzen bei einem update meist die .htaccess Datei mit ihrer Standard-Datei. Dies führt dann dazu, dass man die eigenen Änderungen nach jedem update neu nachtragen muss, was sehr mühsam ist.

Hat man die Möglichkeit die Server-Konfiguration zu ändern, macht man die Umleitung deshalb am besten direkt im VirtualHost File:

<VirtualHost *:80>
  #[...]
 
  <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteRule ^ <a href="http://www.%{HTTP_HOST}%{REQUEST_URI}" target="blank">http://www.%{HTTP_HOST}%{REQUEST_URI}</a> [L,R=301]
  </IfModule>
 
  #[...]
</VirtualHost>

Quelle: [http://drupal.stackexchange.com/questions/30167/htaccess-www-redirect-in-dev-desktop|drupal.stackexchange.com]

drupal: Alle Benutzer zu einem simplenews Newsletter anmelden

Wenn man Drupal mit bereits einigen usern hat und dann simplenews installiert, will man warhscheinlich alle user zu einem erstellten newsletter hinzufügen.

Dies geht ganz einfach mit zwei SQL kommandos:

INSERT INTO drupal_simplenews_subscriptions(activated,mail,uid) SELECT 1,mail,uid FROM drupal_users WHERE uid > 0 ORDER BY uid ASC;
INSERT INTO drupal_simplenews_snid_tid(snid,tid) SELECT snid,1 FROM drupal_simplenews_subscriptions;

Wobei in diesem Code "1" jeweils die ID des Newsletters ist (muss evtl. angepasst werden!).

Quellen

http://cc.com.au/2010/02/03/drupal-simplenews-mass-subscribe
http://stackoverflow.com/questions/4738403/drupal-simplenews-how-to-subscribe-all-existing-users

Drupal7: Bildergalerie erstellen

In Drupal7 wuede einiges vereinfacht, z.B. das erstellen einer Bilder-Galerie, was früher unzählige module brauchte, lässt sich jetzt mit einem Bewerkstelligen – inlk. "shadowbox effekt".

Folgendes vorgehen ist dazu vonnöten:

  • Einen neuen content type erstellen (admin/structure/types/add)

Titel: Bildergalerie Name: bildergalerie

  • Speichern und Felder hinzufügen wählen
  • Neues Feld: hinzugügen

Beschriftung: Bild Name: field_image Feld: Bild Steuerelement: Bild

  • Feldeinstellungen speichern wählen
  • Im nachfolgenden Dialog den Wert von: Anzahl von Werten auf unbegrenzt setzen
  • Einstellungen speichern
  • Das "shadowbox" Modul herunter laden und installieren
  • Eine View (Ansicht" für die Galerie erstellen

Nun funktioniert die Galerie zwar schon, die Bilder werden jedoch untereinander angezeigt.
Damit die Bilder nun nebeneinander angezeigt werden muss man das "style.css" seines verwendeten Themes um diese Zeile erweitern:

.node-bildergalerie .field-name-field-picture .field-item {float:left; margin:20px;}

Ressourcen

http://drupal.org/node/1025556#comment-4355506
http://drupal.org/node/1025556#comment-4784220

Drupal: CKEditor konfigurieren

In einem anderen KB-Eintrag wurde erklärt, wie man dem bei [http://www.tech-island.com/kb-Platformunabh%C3%A4ngig-Internet-WordPress%3A+Mehrfache+Zeilenumbr%C3%BCche&structure=kb|Wordpress dem WYSIWYG-Editor einen schmaleren Zeilenumbruch] hinkriegt.

Das selbe kann man auch beim in Drupal erhaltenen CKEditor machen:

Erstelle ein Verzeichnis mit dem Namen overrides in sites/all/modules

Erstelle darin folgende zwei Dateien:

overrides.info und overrides.module

in overrides.info schreibe dies:

name = Overrides
description = Overrides settings
core = 7.x
 
package = own

und in overrides.module:

<?php
/<em> wysiwyg overrides </em>/
 
function overrides_wysiwyg_editor_settings_alter(&$settings, $context) {
  if($context['profile']->editor == 'ckeditor') {
    $settings['enterMode'] = 2;
    $settings['shiftEnterMode'] = 1;
  } else if($context['profile']->editor == 'tinymce') {
    $settings['forced_root_block'] = FALSE;
    $settings['force_br_newlines'] = TRUE;
    $settings['force_p_newlines'] = FALSE;
  }
}

Achtung: Das end-tag von <?php ist hier bewusst weg gelassen!

Gehe danach zur Module seite in: admin/modules Dort findest du in der Kategorie "OWN", das Modul "overrides". Aktiviere dieses.

Die Änderung sollte sofort wirksam werden, falls nicht wähle im cache menu: "Flush all caches".

Quelle: Dieser Tip stammt von: http://wdtutorials.com/drupal7/50