Archive for Webserver

PHP maximal 200 Post-Variablen

Nach einem Serverumzug hatte ich diverse Probleme mit der Ausführung eines Scriptes, welches in etwa 250 Variablen in einem Array per Post verschickt (komplexes Formular). Schnell wurde mir klar, dass mein Array stehts beim Eintrag Nr. 197 abgeschnitten war. Nach intensiver Kontrolle der Servereinstellungen in der PHP.ini / phpinfo() bin ich auf den Übeltäter gestoßen:

Die Suhosin Extension weist Standardmäßig folgende Einträge auf:

suhosin.post.max_vars = 200
suhosin.request.max_vars = 200

Wer also Probleme mit abgeschnittenen Post-Variablen hat, sollte seine [suhosin] Konfiguration überprüfen.

Kein Kommentar »

PHP Entwicklungsumgebung mit EasyEclipse

Da sich meine Neuinstallation des Entwicklungsrechners relativ aufwendig gestaltet nutze ich die Gelegenheit einige Dinge hier zu Dokumentieren:

  • Zunächst benötigen wir die eigentliche Entwicklungsumgebung EasyEclipse for PHP, diese steht unter www.easyeclipse.org zum Download bereit.
  • Zum lokalen Entwickeln nutzen wir am besten XAMPP, einen Installer findet man auf www.apachefriends.org. Nach der Installation sollten wir in der http.conf noch den DocumentRoot auf den Workspace-Folder von EasyEclipse legen.
  • Als Debugger empfiehlt es sich die PHP-Extension XDebug zu verwenden, diese wird mit Xampp ausgeliefert muss allerdings noch aktiviert werden. Dafür fügen wir in der php.ini* folgendes bei den Extensions ein “extension=php_xdebug.dll“, kommentieren den kompletten Block[zend] aus und fügen folgendes ein: Lies den Rest des Beitrages

Kein Kommentar »

PHP Session in fremden Frameset starten.

Hin und wieder entwickelt man ein Modul, welches von fremden Seiten z.B. in einem Frameset oder iFrame eingebettet werden soll. Diese Lösung ist zwar nicht sonderlich elegant, ist aber für den Kunden relativ einfach zu handhaben.

Leider wird man dabei aber auch feststellen, dass der Internet Explorer den Session Cookie nicht setzt, wenn die Session innerhalb eines Frames geöffnet wird und diese zeitgleich noch auf einer anderen (Sub-)Domain liegt.

Um dieses Problem zu umgehen, empfiehlt sich folgende Servereinstellung ind er php.ini:

session.use_only_cookies = 0
session.use_trans_id = 1

Hier wird zwar seitens PHP mit Sicherheitsproblemen gewarnt, da man theoretisch eine fremde Session-ID stehlen könnte. Aber solange es sich nicht um Hochsicherheitsdaten (z.B. Kundenadressen, Bankverbindung etc.) handelt und man evtl. noch die IP Adresse einmal in der Session speichert und vergleicht sollte man dennoch ein relativ sicheres System haben. Auch die Lebensdauer der Session sollte nicht zu lange gewählt werden.

Kein Kommentar »

Linksammlung: Physical to Virtual Conversion (P2V)

Mein Ziel ist es, ein bestehenden physikalischen Linuxserver in ein virtuelles Gastsystem zu konvertieren und mit Xen oder VMware weiter zu betreiben. Das ganze soll möglichst Online geschehen, also im laufenden Betrieb des Quellsystems, so dass kein Ausfall entsteht.

Derzeit bin ich noch am recherchieren und ausprobieren, hier schonmal eine Linksammlung. Ich werde hier später meine (Miss-)Erfolge in einer ausführlichen Anleitung berichten:

http://wikibs.informatik.htw-dresden.de/swiki/index.php/Physical-to-Virtual_Migration

http://docs.xensource.com/XenServer/4.0.1/guest/ch02s04.html

http://wiki.computerwoche.de/doku.php/virtualisierung/p2v-tools

Kein Kommentar »

SSH-Tunnel mit Putty

Auf Netzmafia.de habe ich die folgende Anleitung zum herstellen eines Tunnels für HTTP oder andere Dienste mittels SSH und Putty gefunden. Das ist für mich ein wichtiges Thema um Intranet-Server Fernwarten zu können. So kann ich nicht nur den Server an der Konsole fernsteuern, sondern auch Dienste und Webanwendungen testen.

Es funktioniert eigentlich ganz einfach, im Putty eine herkömmliche SSH-Verbindung anlegen. Dann in der Kategorie auf Connection -> SSH -> Tunnels gehen. Hier auf “Add new forwarded port“, in den Sourceport kann man den lokalen Port eintragen, z.B. 8000. In Destination trägt man den entfernten Host:Port ein, also z.B. webserver:80 bzw. 192.168.1.1:80. Anschließen noch auf “Add“, nun erreiche ich im lokalen Webbrowser über http://localhost:8000 den Web- bzw. Intranetserver im zu wartenden Firmennetzwerk.

Die genaue Anleitungs gibts nochmal hier:
www.netzmafia.de

Kein Kommentar »

Linux BackUp mit DAR (disk archive)

Dar ist ein Kommandozeilen BackUp-Programm ähnlich dem bekannten TAR, es gibt jedoch einige ganz nette Features, die meines Wissens nicht in TAR enthalten sind. So lassen sich die Archivdateien schon beim erstellen in kleinere Dateien splitten, so dass diese z.B. auf mehrere CDs/DVDs gebrannt werden können. Lies den Rest des Beitrages

Kein Kommentar »

Ubuntu Linux und PostgresSQL

PostgresSQL wird bei Ubuntu standardmäßig nicht mit installiert via aptitude ist aber kein Problem:

apt-get install postgresql

Ebenso lässt sich das Administrationstool pgAdmin III installieren:

apt-get install pgadmin3

Nun gibt es das Problem, dass wir das Standardpasswort des neu installierte Servers nicht kennen, und somit ein Login über pgAdmin III nicht möglich ist. Abhilfe schafft hier folgender Vorgang:

sudo su postgres -c psql template1
ALTER ROLE postgres WITH PASSWORD ‘meinPasswort’;
\q << zum Verlassen

Nun müsste auch der Login über pgAdmin III möglich sein.

Zur Installation des browserbasierenden phpPgAdmin sind neben der Installation von Apache2 und PHP auch das Paket php5-pgsql notwendig. Nach der Installation von phpPgAdmin sollte die config.inc.php folgende Zeile aufweisen, damit ein Login möglich ist:

$conf['extra_login_security'] = false;

Gegebenenfalls muss die pg_hba.conf noch editiert werden. Ein Zugriff des gesamten Netzwerks sollte dann etwa so aussehen:

host     all     all     192.168.1.0/24     md5

Kein Kommentar »

Webserver unter Linux einrichten

Bin beim aufräumen meiner alten Notebookfestplatte eben auf folgendes PDF gestoßen. Das war mal ein Notizzettel von einem Linuxkurs, ich denke der ist hier ganz gut aufgehoben (auch wenn nur Grundlagen behandelt werden).

Apache 2 unter SuSE einrichten

Kein Kommentar »

Abgeschnittene Texte PHP + MS-SQL Server

Kürzlich hatte ich das Problem, dass lange Texte über 4.000 Zeichen bei der Ausgabe über PHP abgeschnitten werden, beim speichern in die Datenbank wird jedoch der volle Text gespeichert. Um den gesamten Textstring wieder auszugeben müssen folgende Einstellungen in der php.ini bzw. mittels ini_set() vorgenommen werden.

1) Bei MS-SQL über ODBC:
odbc.defaultlrl = [Bytes];

2) Bei MS-SQL über PHP-MSSQL:
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

Kein Kommentar »

FCKEditor in mehrbenutzerfähiges CMS integrieren

Um den WYSIWYG-HTML-Editor in ein mehrbenutzerfähiges System (z.B. eine Mall oder gemeinsam genutztes CMS mit getrennter Dateiverwaltung) zu integrieren sind folgende Anpassungen notwendig:

  1. Die entsprechende Nutzer-ID in der Klasse “FCKeditor” deklarieren:
    var $userId;
  2. Die Nutzer-ID in der Methode “FCKeditor()” (in Klasse FCKeditor) initieren:
    $this->userId = ”;
  3. Weiter unten, in “CreateHtml()” den Querystring in der Variable $Link erweitern:
    $Link = “{$this->BasePath}editor/{$File}?InstanceName=
    {$this->InstanceName}&
    userId={$this->userId}” ;
  4. Nun benötigen wir eine Funktion um den Querystring in JavaScript auszuwerten, hierfür binden wir folgendes Script in die Datei fckeditor.html ein: querystring.js (download). Dies erfolgt z.B. über die Funktion LoadScript(’../querystring.js’) und muss vor dem Aufruf LoadScript(’../fckconfig.js’) erfolgen.
  5. Anschließend ergänzen wir die fckconfig.js um folgende Zeilen:
    var qs = new Querystring();
    var _userId = qs.get(”userId”);
    Dies sollte unbedingt noch vor den Deklarationen “FCKConfig.Linkbrowser = true” etc. erfolgen.
  6. Jetzt ergänzen wir noch die URLs sämtlicher Filebrowser um folgende Parameterübergabe:
    FCKConfig…URL = …Extension + ‘?CMS_ID=’ + _CMSID ;
  7. Abschließend fangen wir die Variable im Filemanager ab und ergänzen den Pfad in der Variable $Config['UserFilesPath'] in der Datei editor\filemanager\connectors\php\config.php um die Nutzer-Id ‘mein/pfad/’.$userId.’/';
    Weiterhin müssen wir $Config['Enabled'] auf true setzen.

Nun sollte jeder Benutzer seine Dateien in ein eigenes Verzeichnis hochladen und niemand kommt sich mit seinen Dateien in die Quere. Da die Quickupload-Funktion Probleme bereitet hat habe ich diese deaktiviert, die Anwender müssen somit über den Filemanager Ihre Dateien hochladen und verwalten.
Diese Angaben basieren auf dem FCKEditor 2.51 in Verbindung mit PHP 4

Kein Kommentar »