{"id":535,"date":"2009-01-28T21:09:00","date_gmt":"2009-01-28T20:09:00","guid":{"rendered":"http:\/\/ollmetzer\/?p=535"},"modified":"2010-07-01T10:21:55","modified_gmt":"2010-07-01T10:21:55","slug":"php-applikationen-entwickeln-das-entwicklungssystem-einrichten","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=535","title":{"rendered":"PHP Applikationen entwickeln &#8211; das Entwicklungssystem einrichten"},"content":{"rendered":"<p>In dieser Folge der Reihe &#8222;PHP Applikationen entwickeln&#8220; besch\u00e4ftigen wir uns damit, wie das Entwicklungsystem auf unserem Rechner eingerichtet wird. Zun\u00e4chst besorgen wir uns die im letzten Artikel beschriebenen Werkzeuge und installieren sie. Das XAMPP-Paket sollte hierbei in das Wurzelverzeichnis installiert werden (also c:\\xampp wie vom Installer vorgeschlagen). Alle anderen Pakete geh\u00f6ren ganz normal in das Programme-Verzeichnis. Das beschriebene Procedere gilt f\u00fcr Windows Rechner, ist aber auf Apple OS X oder Linux prinzipiell \u00e4hnlich.<\/p>\n<p><strong>Den Server installieren und einrichten<\/strong><br \/>\nDie Installation ist denkbar einfach: Das Paket mit dem Installer herunterladen und starten. Nun ist eine lauff\u00e4hige Installation auf dem eigenen Rechner vorhanden. Wenn man das Controlpanel \u00f6ffnet lassen sich die Server einzeln starten und stoppen. Zuvor sollte man sich noch versichern, da\u00df Skype nicht l\u00e4uft, weil sonst der Port 80 f\u00fcr HTTP bereits blockiert ist. Starten wir nun den Webserver und den Datenbankserver.<\/p>\n<div id=\"attachment_889\" style=\"width: 457px\" class=\"wp-caption aligncenter\"><a rel=\"attachment wp-att-889\" href=\"http:\/\/www.ollmetzer.com\/?attachment_id=889\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-889\" class=\"size-full wp-image-889\" title=\"pae_xampp_panel\" src=\"http:\/\/www.ollmetzer.com\/wp-content\/uploads\/2009\/pae_xampp_panel.gif\" alt=\"XAMPP Control Panel\" width=\"447\" height=\"360\" \/><\/a><p id=\"caption-attachment-889\" class=\"wp-caption-text\">Das XAMPP Control Panel<\/p><\/div>\n<p>Beim ersten Start erscheint ein Popup mit der Frage, ob die Firewall MySQL und Apache blockieren soll. Die Firewall soll nat\u00fcrlich entsprechende Anfragen niemals blockieren.<\/p>\n<p>Wenn nun im Controlpanel f\u00fcr Apache und MySQL &#8218;running&#8216; angezeigt wird, l\u00e4uft unser Entwicklungsserver bereits. Davon k\u00f6nnen wir uns ganz einfach \u00fcberzeugen, indem wir den Browser \u00f6ffnen und in der Adresszeile <em>http:\/\/localhost<\/em> eingeben. Localhost ist immer der eigene Rechner. Der Computer fragt also sozusagen sich selbst, ob er eine Website anbietet. Der Browser sollte nun die folgende Seite anzeigen:<\/p>\n<div id=\"attachment_890\" style=\"width: 490px\" class=\"wp-caption aligncenter\"><a rel=\"attachment wp-att-890\" href=\"http:\/\/www.ollmetzer.com\/?attachment_id=890\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-890\" class=\"size-full wp-image-890\" title=\"pae_xampp_splash\" src=\"http:\/\/www.ollmetzer.com\/wp-content\/uploads\/2009\/pae_xampp_splash.gif\" alt=\"XAMPP Startseite\" width=\"480\" height=\"270\" \/><\/a><p id=\"caption-attachment-890\" class=\"wp-caption-text\">XAMPP Startseite<\/p><\/div>\n<p>Der Webserver funktioniert. Nun m\u00fcssen wir ihn noch ein wenig an unsere Bed\u00fcrfnisse anpassen.<\/p>\n<p><strong>PHP Einstellungen<\/strong><br \/>\nDie PHP Einstellungen stehen in der Datei <em>c:\\xampp\\apache\\bin\\php.ini<\/em>. Grunds\u00e4tzlich sind die voreingestellten Werte f\u00fcr ein Entwicklungssystem bereits sehr gut geeignet. Ich m\u00f6chte jedoch einige Erweiterungen aktivieren, die im Grundzustand deaktiviert sind, z.B. CURL. Dazu \u00f6ffne ich die Datei und suche nach <em>extension=php_curl.dll<\/em>. Zum Aktivieren dieser Erweiterung mu\u00df das Semikolon am Zeilenanfang entfernt werden. Dasselbe mache ich mit <em>extension=php_json.dll<\/em>. Die \u00c4nderungen werden nach den Neustart des Webservers \u00fcbernommen.<\/p>\n<p><strong>Projekte sauber trennen mit VHosts<\/strong><br \/>\nSchnell kommt man an den Punkt, an dem man mehr als ein Projekt auf dem Rechner hat. Wir ben\u00f6tigen noch ein paar \u00c4nderungen, um verschiedene Projekte auf dem eigenen Entwicklungssystem unabh\u00e4ngig voneinander lauff\u00e4hig zu halten &#8211; am Besten unter ihrem jeweiligen Namen. Wenn ich also am Projekt &#8218;Homepage&#8216; entwickele, m\u00f6chte ich das im Browser auch unter <em>http:\/\/homepage<\/em> aufrufen k\u00f6nnen. Dazu muss man dem Computer zun\u00e4chst beibringen, da\u00df er selbst gemeint ist, wenn der Browser (oder ein anderes Programm) nach dem Rechner namens &#8218;homepage&#8216; fragt.<\/p>\n<p>Dazu m\u00fcssen wir die Datei <em>hosts<\/em> etwas erweitern, in der der Computer immer zuerst nachsieht, wenn er wissen will, welcher Rechner (besser gesagt: welche IP Adresse) sich hinter einem Namen verbirgt. Bei Unix-Systemen (also auch Linux und Mac OS X) ist diese Datei <em>\/etc\/hosts<\/em>. Bei Windows ist das <em>c:\\windows\\system32\\drivers\\etc\\hosts<\/em>. \u00d6ffnen wir nun also diese Datei mit einem einfachen Texteditor. Vermutlich ist der einzige Eintrag, der unter den Kommentaren steht, der folgende:<\/p>\n<pre>127.0.0.1        localhost<\/pre>\n<p>Am Anfang eines Eintrags steht die IP-Adresse und dahinter der dazugeh\u00f6rige Hostname.<br \/>\nDie Zahlenfolge 127.0.0.1 ist die IP-Adresse des sogenannten loopback-devices. Jede Anfrage an diese IP-Adresse geht immer an den eigenen Rechner, egal wieviele andere Rechner noch im Netz sind. Danach folgt der Hostname &#8218;localhost&#8216;. Jede Anfrage an localhost wird also aufgrund dieses Eintrags an den eigenen Rechner gestellt. Wenn wir nun m\u00f6chten, da\u00df auch der Aufruf des Rechners mit den Namen &#8218;homepage&#8216; an den eigenen Rechner gestellt wird, m\u00fcssen wir diese Datei erweitern. Dazu f\u00fcgen wir die folgende Zeile hinzu und speichern die Datei.<\/p>\n<pre>127.0.0.1        homepage<\/pre>\n<p>Wenn wir nun im Browser <em>http:\/\/homepage<\/em> eingeben, sehen wir die bereits bekannte Startseite von XAMPP.<\/p>\n<p>Nun m\u00fcssen wir noch dem Apache beibringen, da\u00df ein Aufruf mit diesem Namen andere Inhalte liefern soll. Dazu m\u00fcssen wir namensbasierte virtuelle Hosts einrichten. Dazu \u00f6ffnen wir die Datei <em>c:\\xampp\\apache\\conf\\extra\\httpd-vhosts.conf<\/em>.<br \/>\nZuerst werden die Kommentarzeichen vor dem Eintrag NameVirtualHost \\*:80 entfernt.<br \/>\nNun wird am Ende der Datei der folgende Eintrag gemacht:<\/p>\n<pre>\r\nServerAdmin webmaster@localhost\r\nDocumentRoot \/xampp\/htdocs\/\r\nServerName localhost\r\n<\/pre>\n<p>Dadurch bleibt der bisherige localhost auch mit weiteren Vhosts weiterhin ansprechbar. Jetzt machen wir den Eintrag f\u00fcr unser Projekt &#8218;Homepage&#8216;:<\/p>\n<pre>\r\nServerAdmin webmaster@localhost\r\nDocumentRoot \/xampp\/htdocs\/homepage\/htdocs\/\r\nServerName homepage\r\nErrorLog \/xampp\/htdocs\/homepage\/logs\/error.log\r\nCustomLog \/xampp\/htdocs\/homepage\/logs\/access.log common\r\n<\/pre>\n<p>Bevor der Webserver neu gestartet wird, m\u00fcssen die Verzeichnisse f\u00fcr den Vhost angelegt werden, weil sonst der Neustart mit einem Fehler abgebrochen wird. Zun\u00e4chst also der Projektordner <em>c:\\xampp\\htdocs\\homepage\\<\/em> und in diesem dann die beiden Unterverzeichnisse <em>htdocs\\<\/em> und <em>logs\\<\/em>.<\/p>\n<p>Das Vorgehen um weitere Vhosts anzulegen ist entsprechend.<\/p>\n<p><strong>Sprechende URLs<\/strong><br \/>\nUm das &#8218;verbiegen&#8216; oder umschreiben, von URLs zu erm\u00f6glichen, wie es heutzutage viele Webanwendungen voraussetzen, \u00f6ffnen wir die Datei <em>c:\\xampp\\apache\\conf\\httpd.conf<\/em> und suchen die folgende Zeile:<\/p>\n<pre>LoadModule rewrite_module modules\/mod_rewrite.so<\/pre>\n<p>Die Zeile darf nicht auskommentiert sein, damit das Modul mod_rewrite geladen wird. Jetzt m\u00fcssen wir noch daf\u00fcr sorgen, da\u00df die Rewrite-Regeln in einer .htaccess Datei ge\u00e4ndert werden k\u00f6nnen. Daf\u00fcr suchen wir im Abschnitt &#8218;Main Server Configuration&#8216; die Default-Einstellungen, die mit  beginnen. In dem Abschnitt \u00e4ndern wir nun <em>AllowOverride None<\/em> in <em>AllowOverride All<\/em>.<\/p>\n<p><strong>Den Editor einrichten<\/strong><br \/>\nDas eclipse-Archiv entpacken wir an eine sinnvolle Stelle (z.B. nach <em>c:\\Programme\\eclipse\\<\/em>) und starten das Programm. Den Workspace legen wir nach c:\\xampp\\htdocs\\ &#8211; also das webroot-Verzeichnis unseres lokalen Webservers. Dort werden nun die einzelnen Projekte angelegt. Jetzt legen wir ein neues PHP-Projekt mit dem Namen &#8218;homepage&#8216; an. Eclipse nutzt das bereits vorhandene Verzeichnis  c:\\xampp\\htdocs\\homepage\\ und legt dort einige Projektdateien an.<\/p>\n<p><strong>Feintuning<\/strong><br \/>\nDer \u00dcbersicht halber benenne ich die Datei c:\\xampp\\htdocs\\index.php in index_old.php um und erzeuge eine einfache index.html mit allen Links zu den lokalen Ressourcen (Projekte, Tools und Dokumentation). So habe ich mit einem einfachen http:\/\/localhost immer die aktuelle \u00dcbersicht.<\/p>\n<p>Nun ist die lokale Arbeitsumgebung eingerichtet und die Projektarbeit kann beginnen.<\/p>\n<p>&#8212;<\/p>\n<p>Bisherige Folgen:<br \/>\n1. <a title=\"Folge 1\" href=\"http:\/\/www.ollmetzer.com\/blog\/index.php?\/archives\/526-PHP-Applikationen-entwickeln.html\">PHP Applikationen entwickeln<\/a><br \/>\n2. <a title=\"Folge 2\" href=\"http:\/\/www.ollmetzer.com\/blog\/index.php?\/archives\/527-PHP-Applikationen-entwickeln-Werkzeuge.html\">PHP Applikationen entwickeln &#8211; Werkzeuge<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In dieser Folge der Reihe &#8222;PHP Applikationen entwickeln&#8220; besch\u00e4ftigen wir uns damit, wie das Entwicklungsystem auf unserem Rechner eingerichtet wird. Zun\u00e4chst besorgen wir uns die im letzten Artikel beschriebenen Werkzeuge und installieren sie. Das XAMPP-Paket sollte hierbei in das Wurzelverzeichnis installiert werden (also c:\\xampp wie vom Installer vorgeschlagen). Alle anderen Pakete geh\u00f6ren ganz normal in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-535","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=535"}],"version-history":[{"count":1,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/535\/revisions"}],"predecessor-version":[{"id":894,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/535\/revisions\/894"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}