[PHP] Der include path
Oft liest man, dass man bestimmte Verzeichnisse in den sog. include path aufnehmen soll oder im include path irgendwelche scripts ablegen soll und das meist ohne weitere Erklärung. Der Include Path und das Administrieren des Selbigen gehört also mehr oder weniger zu den Grundkenntnissen. Dennoch ist es für viele ein Mysterium.
Da ich gestern ein wenig damit gearbeitet habe, dachte ich, ich blogge mal ein wenig drüber. Warum? Weil ichs kann. Und weil ich eine kleine Hilfestellung zum Thema path im Allgemeinen und dem PHP include path im Speziellen zur Verfügung stellen möchte.
[yii] Globale Installation unter Linux
Jaaa, richtig, ich arbeite zur Zeit mit dem yii-Framework. Und ich finde es toll
1. Die Installation
ghost@spacebox:~$ sudo -s root@spacebox:~$ cd /var/www/lib root@spacebox:/var/www/lib$ svn co http://yii.googlecode.com/svn/trunk/framework yii
2. Updaten des Frameworks
ghost@spacebox:~$ sudo -s root@spacebox:~$ cd /var/www/lib root@spacebox:/var/www/lib$ svn up
3. Das Kommandozeilen-Tool im PATH ablegen:
ghost@spacebox:~$ sudo ln -s /var/www/lib/yii/yiic /usr/bin/yii
Absofort steht der Befehl "yii" in der bash zur Verfügung.
4. Anpassen der Applications
Die index.php jeder Application musst angepasst werden, damit das Framework gefunden wird:
<?php
set_include_path('/var/www/lib/yii');
define('DIR', dirname(__FILE__));
define('YII_DEBUG', true);
define('YII_TRACE_LEVEL', 3);
$config = DIR . '/app/config/main.php';
require_once('yii.php');
Yii::createWebApplication($config)->run();
[Linux] Apache/MySQL/Eclipse PDT unter Ubuntu einrichten
Hier eine kurze Anleitung wie man sich unter einem aktuellen Ubuntu eine Entwicklungsumgebung mit Apache, MySQL und PDT einrichtet.
Schritt 1: Das Arbeitsverzeichnis
Zuerst legen wir uns ein Arbeitsverzeichnis an, der Eclipse-Workspace. Hier werden später die Projekte abgelegt. Außerdem dient das Verzeichnis als DocumentRoot für den Apache:
ghost@spacebox:~$ mkdir workspace
Fertig. Langweilig, ich weiß
Schritt 2: Der Apache
Installieren des Apachen mit mod_php5:
ghost@spacebox:~$ sudo aptitude install apache2 libapache2-mod-php5
Einrichten der DocumentRoot:
ghost@spacebox:~$ sudo vim /etc/apache2/sites-avilable/default
Es öffnet sich der vim mit der default site, welche wir wie folgt anpassen ([i] zum Bearbeiten):
<VirtualHost *:80>
DocumentRoot /home/ghost/workspace
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/ghost/workspace>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
(...)
</VirtualHost>
[esc], ":wq", [enter] speichert und schließt die Datei.
Anschließend muss der Apache reloaded werden, das funktioniert wie folgt:
ghost@spacebox:~$ sudo /etc/init.d/apache reload
Zum Testen legen wir innerhalb des workspace-Verzeichnisses eine index.php an:
ghost@spacebox:~$ cd workspace ghost@spacebox:~/workspace$ echo 'Hallo Welt!' > index.php
Im Anschluss dazu rufen wir im Browser die URL "http://localhost/index.php" auf.
Wir erhalten eine weiße Seite und ein "Hallo Welt!".
Schritt 3: Der MySQL-Server
Zuerst den MySQL-Server und den Client installieren:
ghost@spacebox:~$sudo aptitude install mysql-client-5.1 mysql-server-5.1
Während der Installation wird man dazu aufgefordert ein root-Passwort für den MySQL-Server festzulegen, dort ein beliebiges Passwort eingeben und selbiges bitte merken
anschließend ein Verbindungstest zum Server:
ghost@spacebox:~$ mysql -h localhost -u root -p
Nach der Eingabe des korrekten Passworts, welches wir eben bei der Installation festgelegt haben, startet die mysql-Shell:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 34 Server version: 5.1.41-3ubuntu12 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Schritt 4: Die PDT
Die PHP Development Tools ist eine auf Eclipse basierende Entwicklungsumgebung für PHP.
Zuerst laden wir uns das tar.gz-Archiv, welches wir auf der offiziellen Website finden und entpacken dieses anschließend nach /opt/eclpse:
ghost@spacebox:~/Desktop$ sudo tar xvzf eclipse.tar.gz -C /opt/
Über einen Rechtsklick auf das Gnome bzw KDE-Menü kann mit Hilfe des "Menü bearbeiten"-Tools ein Menü-Eintrag für Eclipse angelegt werden. Der Befehl zum starten von Eclipse lautet:
/opt/eclipse/eclipse
Nun stehen Apache und MySQL zusammen mit PDT zur Verfügung. Der Apache und der MySQL-Server starten bei jedem Booten des Systems automatisch und müssen daher nicht manuell gestartet werden.
[Codeigniter] Tutorial Teil 1: Wie installiere ich das Framework?
Letzte Woche hatte ich euch eine Einführung in das Codeigniter-Framework gegeben um damit meine Tutorial-Reihe zu beginnen.
Nachdem ihr nun wisst, was Codeigniter ist und welche Vorteile das Framework mit sich bringt, machen wir nun mit dem nächsten logischen Schritt weiter: Die Installation.
Da es in Codeigniter nicht nötig ist, sich durch eine Fülle an Config-Files zu wühlen um am Ende dann doch alles falsch konfiguriert zu haben, geht die Installation im Vergleich zu anderen Frameworks relativ schnell.
Get Codeigniter!
Überraschungsarm, besteht die erste Handlung aus dem Herunterladen des Frameworks. Dazu rufen wir die Seite http://www.codeigniter.com auf, wo uns auch direkt der Download-Link angeboten wird.
Für das Beispiel-Projekt legt ihr euch auf euerer Festplatte einen Ordner an; z.B. "ci_tut". Optimalerweise befindet sich dieser im Document-Root des Webservers.
In dieses Verzeichnis legen wir dann die eben runtergeladene ZIP-Datei ab und entpacken diese in das selbe Verzeichnis. Danach liegt uns folgende Struktur vor:
- index.php
- license.txt
+ system
+ user_guide
[Codeigniter] Start der Tutorial-Reihe
Dies ist der einleitende Beitrag zu meiner Tutorial-Reihe über das OpenSource PHP-Framework Codeigniter.
In dieser Artikel-Reihe, die ich unregelmäsig fortführen werde, möchte ich euch das Codeigniter-Framework etwas näher bringen.
Ich selbst habe schon einige Projekte mit diesem Framework umgesetzt bzw. arbeite gerade mit dem Framework und kann es mir aus meiner täglich Arbeit kaum noch wegdenken.
Es war das erste PHP-Framework, mit dem ich Kontakt hatte und bei dem ich auch geblieben bin nachdem ich symfony und cakePHP ausprobiert und einige andere Frameworks überflogen habe.
Hier erstmal das Inhaltsverzeichnis des Tutorials. Die Links werde ich entsprechend immer ergänzen, sobald der jeweilige Artikel online ist.
- Die Einleitung: Was ist Codeigniter?
- Teil 1: Wie installiere ich das Framework?
- Teil 2: Grundlagen
- Teil 3: MVC? Kann man das essen?
- Teil 4: Der erste Controller
- Teil 5: Was der User sieht: Views
- Teil 6: Auf dem Catwalk: Models
- Teil 7: AJAX, jQuery und Codeigniter
- Teil 8: Die Session-Library
- Teil 9: Helper und Libraries – Marke: Eigenbau
- Teil 10: Mehr Power für das Framework: Hooks
- (…)
Das ist also der Plan. Wer sich hier noch weitere Themen wünscht, darf sich gerne dazu äußern. Evtl. kann man ein paar Artikel in Gastartikel auslagern, mal sehen
Los geht es in diesem Beitrag. Erstmal ist natürlich zu klären, was Codeigniter eigentlich ist und was für seine Verwendung spricht.
[Projekte] ViewController 0.1.1
Habe gerade noch ein paar Bugfixes an meinem ViewController vorgenommen. Außerdem findet sich das Script nun in meinem Portfolio wieder.
[Codeigniter] ViewController
Leider liegt dem Codeigniter-Framework kein ordentlicher ViewController bei, der die Verwaltung der Views erleichtert bei. Da ich aber dennoch nicht darauf verzichten möchte, habe ich mir hierfür einen Hook geschrieben, der diese Lücke im Framework füllt.
Und natürlich teile ich dieses wundervolle Stück Code gerne mit euch
Wie ihr den Hook installiert und verwendet erkläre ich euch in diesem Artikel. Ich hoffe es hilft euch weiter. Für Verbesserungsvorschläge und Bugreports bin ich natürlich immer offen.
Hier erstmal das tgz-Archiv zum Downloaden.
1. Einführung
Ich gehe mal davon aus, dass ihr bei eueren Projekten zumeist eine head.php in dem view-Verzeichnis liegen habt. Diese beinhaltet das öffnende HTML-Tag, den HEAD-Tag, den öffnenden BODY-Tag und ein wenig HTML-Code im Body. Die Datei wird bei jedem Request vor dem eigentlichen Content der Seite geladen. Dazu gibt es wahrscheinlich noch eine foot.php und vielleich noch eine navigation.php oder sowas ähnliches. Also praktisch den "Frame", welcher alles um den Content außenrum darstellt.
Natürlich ist es nun unschön diese Dateien in jeder Controller-Action laden zu müssen. Dies und noch mehr soll der ViewController erledigen.
[PHP] Fiese PHP Skripte: Obscurity Code
Nils hat zum Verfassen von fiesen PHP Skripten aufgerufen. Dem bin ich natürlich gefolgt.
Zuerst die Frage: Was meint er denn überhaupt? Da ich mir nicht ganz im Klaren war, was Nils mit "fies" meint, habe ich mir überlegt ..
- … das Skript könnte etwas fieses mit dem System anstellen: na ja find ich persönlich jetzt nicht so spannend. Fork Bombs gibts zu genüge und das geht mit Perl sowieso schöner …
- … das Skript könnte einfach extrem schlecht programmiert sein: Lustig ist es ja. Aber auf Kommando schlechten Code zu produzieren ist schwerer als man glaubt *g*
- … das Skript könnte sehr unsicher sein: Na gut, das ist nicht schwer, das sieht man oft genug.
- … das Skript könnte interessante Syntax-Features verwenden und am Ende aussehen wie ein zusammengehacktes, unleserliches PERL-Script: Das klingt doch lustig
Also habe ich mir angesehen, was man in PHP exotisches mit der Syntax anstellen kann und bin auch fündig geworden. Außerdem habe ich selbst noch ein wenig rumporbiert. Ergebnis ist folgender Code.
Wobei ich mir hier auch das Prinzip der "security by obscurity" zu Nutze gemacht habe und das Skript einfach extrem unleserlich geschrieben habe. Fies eben
Hier ein paar Merkmale des Codes:
- Keine ordentliche Kapselung
- "€" als Namen für Methoden und Funktionen funktioniert
- "_" als Klassenname
- Sehr unleserlich, da die Methoden namen in einem Array abgelegt ist und die Methoden dann dynamisch aufgerufen werden
- Es is auch ein Singleton-Pattern implementiert *g*
So würde das in der Praxis natürlich niemand machen. Aber es geht.
Keine Angst vor dem Ausführen: Das Script gibt einfach nur Zahlen von 0-10 mit Einrückung aus.
<?php
$f=_::€0();for(;_::$i->c<_::$f[4]();){_::$i->$f[3]()||_::$f[1]((_::$i->c<10?' '._::$i->c:_::$i->c));}
class _{var $c;static $i;
static function €0(){self::$i = new _;return array('€0','€1', '€2', '€3', '€4');}
static function €1($t){echo $t."\n";}
function €3(){$this->c++;}
static function €4(){return 10;}}
[PHP] PHP 5.3 Release
Heute steht nach langem Warten endlich die neue PHP-Version 5.3 in den Startlöchern und wartet auf den Release, der im Laufe des Tages erfolgen wird.
Ganz besonders freue ich mich auf die Namespaces, Late Static Binding und Lambda/Closures. Ich warte nur auf den Startschuss um das neue Apache-Modul zu kompilieren und die neuen Funktionen auszuprobieren. *gespannt*
Ich hoffe mal, dass meine Projekt noch mit PHP 5.3 laufen, habe da aber eher wenig Bedenken …
[Symfony] sfDoctrine meldet “Couldn’t locate driver named mysql”
Was tun, wenn das sfDoctrine-Plugin bei dem Task build-sql folgende Meldung zurückgibt?
Couldn’t locate driver named mysql
Die Meldung entsteht, wenn dem sfDoctrine-Plugin das PDO nicht zur Verfügung steht. Einfach in der php.ini (für die CLI, nicht für den apache!) “pdo_mysql” aktivieren
Unter Debian befindet sich die Datei unter “/etc/php5/cli/php.ini“. Zumindest bei mir *g*
