PHP

Apache & PHP & MySQL = Application Error !?!

11. Juli 2009 · Programmierung · andreas · Kein Kommentar

Nachdem monatelang Apache 2.0.63, PHP 5.2.6 und MySQL 5.0.51 in trauter Einigkeit gewerkelt haben, wurde - never change a running System - zeitgleich mit einem Hardware-Upgrade auch eine Betriebssystem-Neuinstallation sowie ein Update der installierten Software auf die jeweils aktuellen Versionen vorgenommen.

Der Apache blieb bei der alten Version, PHP auf 5.2.9 modernisiert und auch MySQL auf die Version 5.1.35 angehoben. Die Installation lief problemlos und auch der obligatorische Aufruf eines phpinfo(); zeigte im Browser das erwartete Ergebnis.

Weniger erwartet war aber, daß sich beim Aufruf fast jeder lokalen PHP-Seite der Webserver mit einem “Application Error” verabschiedete und Windows gerne einen Bericht an Microsoft schicken wollte. Die einzige Gemeinsamkeit an den nicht funktionierenden Seiten waren Zugriffe auf die Datenbank, immerhin eine Spur.

Nachdem ein testweises Downgrade von PHP keine Änderung (= Linderung) des Problems brachte, hat der Rückschritt auf den 5.0’er MySQL die Symptome wie von Geisterhand kuriert

Die Ursache? Wahrscheinlich irgendwo im Zusammenhang mit “MySQLs PHP-API”, aber nachdem es weder in den Windows-Protokollen (daß Apache abgeschmiert ist, weiß ich selbst) noch in den Apache-Logs (die “error.log” ist eben kein Crash-Log) einen brauchbaren Anhaltspunkt zur Fehlersuche gibt, wird die Lösung erstmal vertagt.


Excel-Export quick & dirty

23. Januar 2009 · Anwendungen · andreas · Kein Kommentar

Zwar gibt es für PHP mit dem PHP Extension and Application Repository (PEAR) ein ähnliches Repository, wie es das Comprehensive Perl Archive Network (CPAN) für PERL darstellt, allerdings ist für die meisten Zwecke die Installation und Konfiguration von PEAR zu aufwendig im Hinblick auf das benötigte Ergebnis.

So gibt es zwar zum Schreiben von Excel-Dateien den “Spreadsheet::WriteExcel"-Clon “Spreadsheet_Excel_Writer”, der allerdings für einfache Exportzwecke deutlich überdimensioniert ist.

Diese kann man auch z.B. von Hand lösen, in dem man die Funktion von Excel ausnutzt, im “Notfall” auch HTML-Tabellen interpretieren zu können:

<?php
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=excel.xls");
?>
<table>
<tr>
<td>AA</td><td>BB</td>
</tr>
<tr>
<td>CC</td><td>DD</td>
</tr>
</table>

Beim Aufruf des Skripts öffnet sich der “Speichern unter”-Dialog des Browsers und man erhält in der Tat eine Excel-Tabelle, die u.U. den netten Charme hat, mit dem gleichen Code wie die Bildschirmausgabe nur mittles Template-Wechsel erzeugt werden zu können.