You are not logged in.

  • Login

1

Tuesday, February 17th 2009, 11:39am

Fileinfo / mime_content_type

Hallo allerseits,

ich versuche momentan einen einigermaßen sicheren Uploadschutz zu programmieren, der alle gängigen Exploits berücksichtigt. Auf meinem Server läuft die aktuelle Version von PHP5 (5.2.8) inkl. zahlreicher Module. Ich habe nun PHP mit Unterstützung für mime_content_type kompiliert und die korrekten Einstellungen in der php.ini gesetzt. Die Funktion arbeitet laut phpinfo() einwandfrei. Im Echtbetrieb liefert sie aber nur false zurück. Laut diverser Bugeinträge soll man daher auf die PECL (ab PHP5.3 nativ enthaltene) Erweiterung Fileinfo bauen. Diese habe ich nun per PECL installiert, jedoch heißt es immer, die Funktionen könnten nicht gefunden werden (finfo_open z.B. - oder auf new finfo();). Bei der Installation der Erweiterung treten aber keine Fehler auf und in der php.ini ist die .so-Datei korrekt eingebunden. Weiß jemand Rat?

Liebe Grüße,
Philipp

2

Tuesday, February 17th 2009, 1:44pm

Hast du das auch berücksichtigt ?

Quoted


magic_open library is needed to build this extension.


Eigentlich müsstest du sie ja haben, sonst würde dir PECL ja nen error ausspucken, aber man weiss ja nie ;)

3

Tuesday, February 17th 2009, 2:47pm

Ich habe die Erweiterung nun noch einmal gelöscht, alle Abhängigkeiten kontrolliert, sie nochmal per PECL installiert und nun geht es. Versteh das einer...

Aber, Vince, ich habe gleich noch eine Frage! :-)

Wenn ich Fileinfo wie in der Dokumentation verwende, z.B. mit folgendem Code, kommt als Ausgabe kein MIME-Code raus, sondern ein schöner Text, der mir beschreibt, was für eine Datei das ist. Da ich leider nicht mit Volltext-Hinweisen arbeiten wollte, sondern gerne die Kurzform hätte, nützt mir das nichts. Kennst Du das Verhalten?

PHP Quellcode

1
2
3
4
5
$finfo = new finfo(FILEINFO_MIME);
$mime_type = $finfo->file('/var/www/.../public/index.html');
var_dump($mime_type);
# bekommen: string(18) "HTML document text"
# erwartet: string(9) "text/html"

4

Tuesday, February 17th 2009, 3:16pm

Hallo,

Da das ZendFramework das alles kann, schau mal in das Repository das ist in mancher hinsicht die reinste Goldgrube: http://framework.zend.com/svn/framework/…le/MimeType.php

5

Tuesday, February 17th 2009, 6:08pm

Hallo,

danke für den Hinweis, auch wenn sie es dort nicht anders als bei php.net machen, funktioniert es offenbar nur korrekt, wenn man den Pfad zur magic.mime-Datei vollständig übergibt. Für alle, die irgendwann mal danach suchen und gerne ein funktionierendes Snippet sehen wollen:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
# Kann je nach System unterschiedlich sein.
define("MAGIC", "/etc/magic.mime");
 
var_dump(defined('MAGIC'));
 
# bool(true)
 
$finfo = new finfo(FILEINFO_MIME, MAGIC);
$mime_type = $finfo->file('/var/www/.../public/index.html');
 
var_dump($mime_type);
 
# string(9) "text/html"
 
?>

Similar threads

Social bookmarks