<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Aus dem Leben eines Szlauszafs (Entries tagged as PHP)</title>
    <link>http://th-h.de/blog/</link>
    <description>Immer eine Handvoll Heu unter der Sznauze.</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:thh@greenmeadow.szaf.org" />
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    <managingEditor>thh@inter.net</managingEditor>
<pubDate>Sun, 06 Feb 2011 12:09:51 GMT</pubDate>

    <image>
        <url>http://th-h.de/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Aus dem Leben eines Szlauszafs - Immer eine Handvoll Heu unter der Sznauze.</title>
        <link>http://th-h.de/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Digitale Ausstellungsstücke</title>
    <link>http://th-h.de/blog/archives/1648-Digitale-Ausstellungsstuecke.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1648-Digitale-Ausstellungsstuecke.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1648</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1648</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Wer (digitale) Fotos - in welcher Menge, Häufigkeit und Qualität auch immer - macht, der kennt das Problem, sie online verfügbar zu machen. Gut, das eigentliche Problem ist die Überwindung der eigenen Faulheit und das Auswählen, Sortieren, Umbenennen und ggf. Kommentieren einmal wirklich anzugehen, aber man möchte dazu auch die entsprechende, möglichst einfach verwendbare, aber alle notwendigen Funktionen bietende Software haben.&lt;/p&gt; 
&lt;p&gt;Man kann dazu Web-2.0-Dienste wie &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1714&amp;amp;entry_id=1648&quot; title=&quot;http://www.flickr.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.flickr.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;flickr&lt;/a&gt; nutzen, aber nicht jeder möchte das, sei es, daß man solchen Diensten generell nicht traut und/oder die Software lieber selbst installieren möchte, sei es, daß man am &amp;#8220;Sharing&amp;#8221; von Fotos gar nicht interessiert ist, sondern den Zugriff potentiell nur wenigen ermöglichen möchte. Insoweit habe ich dann schon einiges durch: mehr schlecht als recht selbst gebaute Implementationen für die Webseiten meiner Hilfsorganisation oder einer Newsgroup (seit ~ 2002), dann für meine private Homepage (ebenfalls seit ~ 2002) &lt;em&gt;&lt;a title=&quot;My Image Gallery (mig)&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1715&amp;amp;entry_id=1648&quot;  onmouseover=&quot;window.status=&#039;http://mig.sourceforge.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;mig&lt;/a&gt;&lt;/em&gt;, ein sehr einfaches Script (auch deshalb, weil man von den Platzhirschen wie Gallery nicht viel Gutes über die Sicherheit hörte), und seit Anfang 2008 (nach dem Erhalt meiner neuen Kamera Weihnachten 2007) auch eine &lt;em&gt;&lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1716&amp;amp;entry_id=1648&quot; title=&quot;http://gallery.menalto.com/&quot;  onmouseover=&quot;window.status=&#039;http://gallery.menalto.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Gallery-2&lt;/a&gt;&lt;/em&gt;-Instanz, mit der ich allerdings nie so recht angefreundet hatte (zumal bis zu einem Kurzurlaub 2008 zurück noch Bilder zum Sortieren und Hochladen im Backlog liegen - siehe die einleitenden Worte zu diesem Artikel &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;). Während ich jetzt darüber nachdachte, ob sich nicht ein Update auf &lt;em&gt;Gallery 3&lt;/em&gt; anbietet, bekam ich den &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1852&amp;amp;entry_id=1648&quot;  onmouseover=&quot;window.status=&#039;http://www.midnight-visions.de/piwigo/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;Midnight Visions, Svens Howto-Blog: piwigo&quot;&gt;weisen&lt;/a&gt; Rat, mir doch einmal &lt;em&gt;piwigo&lt;/em&gt; anzusehen.&lt;/p&gt; 
&lt;p&gt;Und das hat mich überzeugt. Zumindest dann, wenn man eine Fotogalerie-Applikation nur für sich selbst ohne ausgefeiltes Benutzermanagement für mehrere Fotografen braucht (und wie oft teilt man sich eine Galerie wirklich zu mehreren?), ist &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1718&amp;amp;entry_id=1648&quot; title=&quot;http://piwigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://piwigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;em&gt;piwigo&lt;/em&gt;&lt;/a&gt; eine tolle Lösung. Installation und Konfiguration sind einfach (Voraussetzungen: PHP und mySQL), wenn man das Prinzip einmal begriffen hat, der Upload ist übers Web wie auch einfach per FTP möglich, Thumbnails werden erstellt, Benutzer können in vorgegebene Rechtegruppen (Gast, Bekannter, Freund, Familie, ...) oder in Nutzergruppen eingeteilt werden, und für Alben bzw. Fotos lassen sich dann die entsprechenden Zugriffsrechte setzen. Fotos lassen sich nicht nur in Alben, sondern in Kategorien zusammenfassen und zugleich noch beliebig taggen; der Benutzer kann sich die Fotos nach Kategorien oder Tags oder nach dem Kalender oder sonstwie anzeigen lassen, bekommt dabei aber immer nur die Fotos oder Kategorien zu sehen, für die er entsprechende Rechte hat. Außerdem gibt es eine Reihe vorgefertigter, recht ansehnlicher Skins.&lt;/p&gt; 
&lt;p&gt;Mir gefällt&amp;#8217;s jedenfalls, und ich habe den heutigen Tag dann im wesentlichen dazu genutzt, aus den drei oder vier vorgenannten Quellen der letzten 10 Jahre die dort vorhandenen Fotos in einer Galerie zusammenzuführen und dann den Rest zu löschen. So gesehen also wie gestern ein weiterer Tag des Räumens und Sortierens. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Mon, 10 Jan 2011 19:28:00 +0100</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1648-guid.html</guid>
    <category>php</category>
<category>piwigo</category>

</item>
<item>
    <title>Mantis Bug Tracker und Mantis Graphs 1.0</title>
    <link>http://th-h.de/blog/archives/1589-Mantis-Bug-Tracker-und-Mantis-Graphs-1.0.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1589-Mantis-Bug-Tracker-und-Mantis-Graphs-1.0.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1589</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1589</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;&lt;a title=&quot;Mantis Bug Tracker&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1596&amp;amp;entry_id=1589&quot;  onmouseover=&quot;window.status=&#039;http://www.mantisbt.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mantis&lt;/a&gt; (aktuell in der Version &lt;strong&gt;1.2.1&lt;/strong&gt;) ist ein ganz netter Bugtracker, also ein Ticketsystem (Fallbearbeitungssystem) für die Softwareentwicklung, dessen auffallendstes Manko allerdings die unterirdische Qualität der Dokumentation (weitgehend schlicht nicht vorhanden, ansonsten grob unvollständig oder weit veraltet) ist. &lt;em&gt;*seufz*&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&amp;#8220;Mantis Graphs 1.0&amp;#8221; ist ein Plugin für Mantis, das graphische Darstellungen ermöglicht, und ich habe heute längere Zeit damit verbracht, es in Betrieb zu setzen, nachdem es immer nur &amp;#8220;unable to read/find font&amp;#8221; von sich geben wollte. Einer der ersten Schritte war die Installation der msttcorefonts (&lt;em&gt;aptitude install ttf-mscorefonts-installer&lt;/em&gt;), aber das genügte nicht. Längeres Debugging mit eingestreuten Statements im Quellcode ergab schließlich, daß Mantis weder das passende Font-Verzeichnis erkennen noch - bei expliziter Angabe des Verzeichnisses in der Konfiguration mit &lt;em&gt;$g_system_font_folder&lt;/em&gt; - die Fontdatei laden wollte. Die Lösung dafür fand sich in der Dokumentation der PHP-Funktion &lt;em&gt;file_exists()&lt;/em&gt;: diese liefert auch dann &lt;em&gt;false&lt;/em&gt; zurück, wenn auf die entsprechende Datei aufgrund von &lt;a title=&quot;PHP: Security and Safe Mode&quot; href=&quot;http://th-h.de/blog/exit.php?url_id=1597&amp;amp;entry_id=1589&quot;  onmouseover=&quot;window.status=&#039;http://de.php.net/manual/en/ini.sect.safe-mode.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;em&gt;safe_mode&lt;/em&gt;&lt;/a&gt;-Restriktionen nicht zugegriffen werden kann ...&lt;/p&gt; 
&lt;p&gt;Und natürlich ist das der Fall: das Font-Verzeichnis - bpw. &lt;em&gt;/usr/share/fonts/truetype/msttcorefonts/&lt;/em&gt; - gehört &lt;em&gt;root&lt;/em&gt;, und die Font-Dateien auch. Jedenfalls ist Owner dieser Dateien niemals der Webserver oder der Benutzer, unter dessen Kennung die PHP-Scripts dank &lt;em&gt;su_php&lt;/em&gt; o.ä. ausgeführt werden. &lt;em&gt;*brummel*&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Es bleibt demnach nur der Verzicht auf die Grafiken oder die Deaktivierung von &lt;em&gt;safe_mode&lt;/em&gt; (für Mantis).&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Fri, 14 May 2010 18:14:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1589-guid.html</guid>
    <category>debian</category>
<category>lenny</category>
<category>mantis</category>
<category>php</category>

</item>
<item>
    <title>Apache 2.x, php-cgi, mod_suphp und &quot;No input file specified!&quot;</title>
    <link>http://th-h.de/blog/archives/1403-Apache-2.x,-php-cgi,-mod_suphp-und-No-input-file-specified!.html</link>
            <category>Bits'n'Bytes</category>
    
    <comments>http://th-h.de/blog/archives/1403-Apache-2.x,-php-cgi,-mod_suphp-und-No-input-file-specified!.html#comments</comments>
    <wfw:comment>http://th-h.de/blog/wfwcomment.php?cid=1403</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://th-h.de/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1403</wfw:commentRss>
    

    <author>thh@inter.net (Thomas Hochstein)</author>
    <content:encoded>
    &lt;p&gt;Im Zusammenhang mit dem Update einer Maschine auf Debian Lenny bin ich auf das seltsame Phänomen einer - offensichtlich von PHP erzeugten - Fehlermedlung gestoßen: der Aufruf einer bestimmten Webseite (respektive des PHP-Scripts, das diese erzeugen sollte) ergibt nur die Meldung &amp;#8220;No input file specified!&amp;#8221;. Google führt einen zu diversen Threads, die sich vor allem um die Konfiguration des richtigen Handlers für die Interpretation von PHP-Scripts und um hilflose Fragen von Benutzern, die eigentlich nur ein fertiges Paket installieren wollten und nun nicht mehr weiter wissen, drehen. Erst ein alter Blogeintrag in &lt;a href=&quot;http://th-h.de/blog/exit.php?url_id=1627&amp;amp;entry_id=1403&quot; title=&quot;http://blog.vodkamelone.de/archives/40-No-input-file-specified-reloaded-oder-komische-Fehlermeldungen-und-noch-komischere-Ursachen.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.vodkamelone.de/archives/40-No-input-file-specified-reloaded-oder-komische-Fehlermeldungen-und-noch-komischere-Ursachen.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ixs&amp;#8217; Vodkamelone&lt;/a&gt; (nein, das hat nichts mit einem Kamel Nr. Eins zu tun!) von 2005 half mir auf die Sprünge.&lt;/p&gt; 
&lt;p&gt;Der Grund dieser Fehlermeldung ist offenbar ein ganz seltsames Zusammenspiel der Ausführung von PHP als &lt;em&gt;mod_suphp&lt;/em&gt;, d.h. der CGI-Version von PHP in der Weise, daß Scripts unter den Rechten des jeweiligen Benutzers ausgeführt werden, mit der Vergabe von Datei- und Verzeichnisrechten. Die oben genannten Fehlermeldung tritt demnach genau dann auf, wenn zwar der Webserver auf die Datei bzw. ihr Verzeichnis zugreifen, sie also &amp;#8220;finden&amp;#8221; kann, der Benutzer selbst aber nicht. Dann findet der Webserver - unter der UID &lt;em&gt;www-data&lt;/em&gt; - das Script, erkennt es, ruft den Handler auf, der als suid root installiert ist, sich Root-Rechte verschafft, damit auf die UID des Benutzers wechselt und dann mit diesen Rechten den PHP-Interpreter aufruft, um ihn das Script ausführen zu lassen. Dieser PHP-Prozess, der jetzt aber im Kontext des Benutzers läuft, kann dann selbst auf das entsprechende Verzeichnis nicht mehr zugreifen, das Script also auch nicht ausführen, und reagiert dann mit der obigen Fehlermeldung, denn er findet ja keine Datei, die er ausführen könnte.&lt;/p&gt; 
&lt;p&gt;Vielleicht hilfts ja jemanden, wenn ich ixs&amp;#8217; Analyse her noch einmal wiedergebe und verlinke. &lt;img src=&quot;http://th-h.de/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Fri, 17 Apr 2009 17:03:00 +0200</pubDate>
    <guid isPermaLink="false">http://th-h.de/blog/archives/1403-guid.html</guid>
    <category>Apache</category>
<category>Debian</category>
<category>Lenny</category>
<category>PHP</category>

</item>

</channel>
</rss>