Windows – Apache – MySQL – PHP: Ist bei mir täglich von Nöten. Doch hat mich der XAMPP 1.6 seit Windows 7 echt zum Verzweifeln gebracht. POST-Request wurden manchmal einfach nicht abgearbeitet, erst ein APACHE-Restart half dann. Nun habe ich WAMP drauf gehauen und bin bis jetzt begeistert. Ein kleines aber feines Interface was sich als Tray ins Windows einfügt. Darüber lassen sich diverse Apache-Module, PHP-Extensions und PHP-Settings aktivieren und deaktivieren.
Alle Posts in scripting
XAMP Alternative WAMP
Ajax Multibox automatisch öffnen
Wie schön, dass ich binnen weniger Minuten einen Blogpost von Samuel fand, indem es genau um dieses Problem ging. Ich musste also absolut gar keinen eigenen Hirnschmalz verwenden. Ich benutze hier zur Demonstration einfach mal einen Teil der Demo aus dem Download von Samuel. Einzige Änderung bzw. Ergänzung befindet sich am Ende ( box.open($(‘mb1′)) )
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {
useOverlay: true,
container: document.body,
contentColor: '#FFF',
showNumbers: true,
descClassName: 'multiBoxDesc',
path: 'multibox/'
});
box.open($('mb1'))
});
Script unter Linux als anderer Benutzer ausführen
root@server01: su -c /usr/scripting/minimize_css.pl www-data
Die Google Analytics Alternative
Es ist neu, es ist frei und es ist mit dem deutschen Datenschutz-Gesetzen konform. So speichert Analytics u.a. die vollständige IP-Adresse eines Besuchers, was die Daten zu personenbezogenen Daten macht. Da Google bisher keinerlei Optionen für Deutschland anbietet, kann man deutschen Webmastern nur empfehlen, den Einsatz zu unterlassen.
Die alternative Open-Source-Lösung Piwik stehe genauso wie Google Analytics kostenlos zur Verfügung und habe den Vorteil, dass die Verarbeitung der Daten nicht bei einer anderen Stelle oder bei einem Auftragsdatenverarbeiter stattfindet, sondern auf den Servern des Webseitenanbieters selbst. Das wiederum ist dann jedoch u.U. mit Kosten für den Webseitenbetreiber verbunden.
Der gute Sven-O-Zilla hat zur Installation und Funktion von Piwik einen tollen Artikel geschrieben. Natürlich gibt es auch mehrere Piwik WordPress Plugins, Piwik-Apps für Apple und Android
CSS-Minimizer Javascript-Minimizer
Das eigentliche Script zum komprimieren der Dateien ist sehr leicht zu verstehen, es wird bei Bedarf von mir ausgeführt. Einfach das Ursprungsverzeichnis und das Zeilverzeichnis konfigurieren und gut ist.
$inpath = '/var/www/www.domain.de/css_raw';
$outpath = '/var/www/domain.de/css';
opendir(DIR,$inpath) || die "$inpath: $!";
my @Dateien = readdir(DIR);
closedir(DIR);
foreach(@Dateien) {
if($_ =~ /.+\.css/) {
use CSS::Minifier qw(minify);
open(INFILE, '< '.$inpath.'/'.$_) or die('Fehler beim oeffnen der css-files'); open(OUTFILE, '> '.$outpath.'/'.$_) or die('Fehler beim erstellen der css-files');
minify(input => *INFILE, outfile => *OUTFILE);
close(INFILE);
close(OUTFILE);
}
}
Lediglich die erste Installation des Perl-Scripts oder eines Perl-Scripts allgemein, war für mich etwas neues. Das Verzeichnis habe ich nach /usr/scripting/CSS-Minifer/ bzw. /usr/scripting/CSS-Minifer/minimize_css.pl kopiert.
Hier kurz die Schritte zum Generieren der .pl-Datei und der Installation:
root@server01:/usr/scripting/CSS-Minifer$ perl Makefile.PL ......Writing Makefile for CSS::Minifier root@server01:/usr/scripting/CSS-Minifer$ make root@server01:/usr/scripting/CSS-Minifer$ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/CSS-Minifier.t .. ok All tests successful. Files=1, Tests=4, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.06 cusr 0.00 csys = 0.09 CPU) Result: PASS root@server01:/usr/scripting/CSS-Minifer$ make install Installing /usr/local/share/perl/5.10.1/CSS/Minifier.pm Installing /usr/local/man/man3/CSS::Minifier.3pm Appending installation info to /usr/local/lib/perl/5.10.1/perllocal.pod
Soweit der Abschnitt zum Perl. Jetzt noch die Pfade anpassen in der minimize.pl-Datei anpassen, die Datei selbst für das Linux System ausführbar machen und einen Testlauf machen:
root@server01: nano /usr/scripting/minimize_css.pl root@server01: chmod +x /usr/scripting/minimize_css.pl root@server01: /usr/scripting/minimize_css.pl
In meinem Fall gab es nun noch ein paar Probleme mit den Benutzerrechten, der Zielordner gehörte ja www-data und das Perl-Script konnte die komprimierten CSS- und Javascript-Dateien nicht in den Zielordner kopieren. Dies löste ich, indem ich das Script/Programm einfach als anderer Benutzer ausführte (in meinem Fall www-data).
[download link="http://www.devilweb.de/wp-content/uploads/2011/03/js_minimizer.zip" smalltext="js_minimizer.zip 24 kB"]Download JS-Minimizer[/download]
[download link="http://www.devilweb.de/wp-content/uploads/2011/03/css_minimizer.zip" smalltext="css_minimizer.zip 24 kB"]Download CSS-Minimizer[/download]
XDEBUG in XAMPP 1.7.x
Es wurde langsam notwendig meine Testumgebung auf PHP5.3 umzustellen und mein XAMPP war auch schon gut 1,5 Jahre alt, also startete heute mein Umstieg auf den XAMPP 1.7.3. Standardinstallation unter Windows, Apachen anpassen (httpd.conf und httpd-xampp.conf), MySQL-Datenbankendateien direkt eingespielt, alles easy going. Unabdingbares Werkzeug im Zusammenspiel mit NETBEANS ist für mich aber XDEBUG geworden und das machte Probleme, denn der neue XAMP hat XDEBUG nun noch weiter integriert (was ja eigentlich toll ist). So aber war die Konfiguration eben mal wieder neu (und anders als in meiner letzten Version) vorzunehmen.
folgende Konfiguration unter xampp/php/php.ini hat letztlich gut funktioniert:
zend_extension = "xamppphpextphp_xdebug.dll" xdebug.profiler_enable = 1 xdebug.profiler_append = 1 xdebug.profiler_output_dir = "xampptmp" xdebug.trace_output_dir = "xampptmp" xdebug.profiler_output_name = "cachegrind.out.xdebug_profile.%p" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp"
MySQL Ausgabe in Datei umleiten
Wenn man erst einmal seinen Query hat, ist es super einfach das Erbenis z.B. einer Abfrage nicht anzuzeigen, sondern direkt in eine Datei umzuleiten, also zu speichern. MySQL bietet hierzu den Befehl INTO OUTFILE an. Das INTO OUTFILE hängt man an das Ende seines SQL-Query, gefolgt von dem Dateinamen und fertig.
SELECT mail AS c_email, cus_id FROM newsletter LEFT JOIN customer ON newsletter.mail = customer.mail WHERE newsletter.subscribe = '1' AND customer.mail IS NULL INTO OUTFILE 'c:/plunderblabla.txt';
Taddaaa isch habe Datei gemacht… Unter Linux ist der Pfad natürlich anzupassen
Aufbau & Funktion von Cron-Tab & Cron-Jobs
Beim Lesen des Artikel von www.lpi-certification.de habe ich mich entschlossen, einen kurzen Artikel zu schreiben, da ich das immer wieder nachschlagen muss.
Aufbau der cron-Tabellen
cron-Tabellen bestehen aus beliebig vielen Zeilen. Kommentare werden durch # in Spalte eins eingeleitet. Sie gelten bis zum Zeilenende. Leerzeilen werden ignoriert.
Nach der Deklaration lokaler Variablen folgt die eigentliche Tabelle. Diese besteht aus sieben Spalten pro Zeile. Die ersten fünf Spalten spezifizieren den Ausfügrungszeitpunkt. Die sechte Spalte enthält den Namen des Users, unter dessen Account der Dienst ausgeführt wird. Der Rest wird als siebte Spalte interpretiert und enthält die auszuführenden Befehle.
Die Terminfelder
Das erste Feld beinhaltet die Minute, das zweite die Stunde, das dritte den Tag, das vierte den Monat. dow steht für den Wochentag (day of the week).
Innerhalb der Terminfelder können die Angaben als Zahlen (im Feld month und dow auch über die englischen Namen) erfolgen. Mehrere Einzeleinträge sind möglich. Sie werden durch Kommata getrennt. Auch Bereiche können angegeben werden. 2,3,4,6 kann auch als 2-4,6 angegeben werden. Das *-Zeichen wird als Joker eingesetzt, das den Bereich ersetzen kann (<erstes Element>-<letztes Element>). Die Felder werden durch ein TAB voneinander getrennt.
Beispiele einer cron-Tabelle
Beispiel einer Crontab:
#minute hour mday month wday who command # Kommentar jede Minute ausführen: * * * * * root sh /volume1/pfad/script.sh # Jeden Tag um 22:00 h ausführen: 0 22 * * * root sh /volume1/dpfad/sript2.pl # Jeden Sa. um 23:00 h ausführen: 0 23 * * 6 root sh /volume1/pfad/script3.sh # Alle 5 min ausführen: */5 * * * * root sh /volume1/pfad/script4.pl # Alle 2 Std. ausführen: 00 */2 * * * root sh /volume1/pfad/script5.sh # Von Mo. bis Fr. um 01:00 Uhr ausführen 0 1 * * 1-5 root sh /volume1/pfad/script6.pl
Der Aufbau ist also wie folgt zu verstehen: * * * * * auszuführender Befehl ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7) │ │ │ └────── Monat (1-12) │ │ └──────── Tag (1-31) │ └────────── Stunde (0-23) └──────────── Minute (0-59)
Ich meine mich zu erinnern, dass es systemabhängige Unterschiede gibt, was Tabulator bzw. Leerzeichen zwischen den Feldern angeht. In jedem Fall aber ist dies ein Unterschied.
Problem mit dem Scrollbalken bei der Ajax Multibox
Eine wirklich tolle Lightbox bzw. Thickbox Alternative ist die Multibox von Samuel Birch. Eine Box für alles vom Iframe bis hin zu Flashvideo (.flv) und WindowsMedia (.wmv). Ein Problem war jedoch, das auf jeder Seite eine horizontale Scrollbar auftauchte (die natürlich überflüssig war). Des Rätsels Lösung war dieser Artikel :
In my situation, a horizontal scrollbar appeared whenever I set the useOverlay flag to true. Apparently, this was caused by the frameborder value of the overlay iframe. To remedy, go into overlay.js and change ‘frameborder’: 1 to ‘frameborder’: 0.
Nachtrag: Die neueste URL der Bibliothek von Samuel Birch: http://www.pa-s.de…..Lightbox-60.php
cURL unter Xampp Lite
Ich weiss gar nicht mehr warum, aber zum arbeiten setze ich nicht XAMPP sondern XAMPP-Lite ein. Erst heute musste ich feststellen, dass kein cURL mit installiert wurde.
Nunja -dachte ich – mal eben unter c:xammplitephp die php.ini angesehen und extension=php_curl.dll ausgeklammert, kurz gechecked ob die .dll da ist wo sie sein sollte, den Apachen neu gestartet und…
Nischt
Nach langem probieren und dem Fragen von Herrn Google, fand ich dann diesen Post: http://www.apachefriends.org/f/viewtopic.php?t=4093 und da ging mir dann endlich ein Licht an: Der xampp lädt eine ganz andere php.ini(!!) Nämlich aus
C:xamppliteapachebin










