Zum Inhalt springen

Forum

PHPWelt.net Blog - Ein weiteres tolles WordPress-Blog


PHP Script local testen

Um PHP Scripte local auf seinem Rechner zu testen, empfehle ich: www.uniformserver.com

Es ist keinerlei installation notwendig und es bringt neben einem Apache Webserver, auch PHP und Mysql mit. Perl sollte auch dabei sein, habe ich aber noch nicht probiert :-)


Warning: Division by zero

Dieser Fehler kommt wenn versucht wurde etwas durch Null zu teilen ;-)
Abhilfe: An der angegeben Position schauen, durch was geteilt wird und evnt. die Rechnung debuggen.


Warning: Cannot add header information – headers already sent

Soll von einem PHP ein header() gesetzt werden, darf vorher noch kein Text ausgegeben werden. Dies ist der Tatsache geschuldet, das alle Header (wie u.a. die Statusheader) noch vor der übergabe von HTML-Code übertragen werden müssen, damit der Browser weiß was phase ist. Wie kommt es nun der Fehler zustande? Wenn man sich die Ausgabe ansieht und dort zusätzlich zu der Fehlerausgabe noch andern Text vor der Fehlermeldung sieht so muss dieser dieser dafür verantwortlich. Steht in der Ausgabe offensichtlich nur die Fehlermeldung so wurde ein/oder mehrere Leerzeichen ausgegeben. Seit ihr euch sicher kein Leerzeichen ausgegeben zu haben so schaut mal ob der <?php Tag auch auf Postion 0/0 steht. Denn selbst ein sonst nicht störendes Leerzeichen vor dem PHP Starttag ruft diesen Fehler hervor. Required und Include Dateien nicht vergessen zu kontrollieren.


Wie kann ich meinen Server absichern?

Ein Webserver sendet von Haus aus viele Informationen mit um sich zu identifizieren. Dem normalen Webseiten besucher nützen die Zusatzinformationen recht wenig. Sie werden eigentlich nur für Statistikzwecke verwendet. Eigentlich.. uneigentlich kann ein angreifer so verwundbare Systeme erkennen. So sendet der Server z.B. folgendes: “Apache/1.3.27 (Linux/SuSE) PHP/4.3.1″ Ist nun im Apache oder PHP dieser Version ein Fehler, ist es für den Angreifer einleichtes. Um es potentiellen Angreifern etwas zu erschweren kann man die mitgesanten Informationen etwas beschneiden.
Apache
In der http.conf den Eintrag “ServerToken Prod” editieren/erstellen.
Lighttpd
in der lighttpd.conf den Eintrag server.tag editieren/erstellen.
PHP
Bei PHP lässt sich die Ausgabe nur unterdrücken und leider nicht modifizuiern. Editiere/erstelle dazu in der php.ini den Eintrag expose_php und setze in auf off.

Sonstige
Nicht nur der Webserver “verrät” potentielle Sicherheitslücken, sondern auch die FTP-Software ist gesprächig:
vsFTPD
In der vsftpd.conf den Eintrag ftpd_banner editieren/erstellen.


Warning: fclose(): supplied argument is not a valid stream resource

Der Warnmeldung

Warning: fclose(): supplied argument is not a valid stream resource

tritt nur in zusammenhang mit Dateifunktionen auf wenn noch kein Filepointer exsitiert. Im Klartext: Es wurde noch keine Datei geöffnet aber es werden Funktionen aufgerufen (wie fclose, fget oder fwrite) die eine geöffnete Datei vorraussetzen


Fehlermeldungen unterdrücken

Setzt man bei einem Funktionsaufruf vor den Namen der Funktion ein @ so wird die Ausgabe von Fehlern, Warnungen und Hinweisen unterdrückt.

$filepointer = @file ("nicht vorhandene Datei") or  die ("Datei konnte nicht geöffnet werden! Der Fehler war: http://www.php-welt.net/handbuecher/deutsch/ref.errorfunc.html#ini.track-errors");

Damit die Nachrichten von PHP-Interpreter nicht im Nirvana verschwinden, werden bei aktivierter Funktion track_errors die Nachrichten in der Variable $php_errormsg gespeichert


Wie kann ich Duplikate aus einem Array entfernen?

Danach hatte ich gerade gesucht. Das gefundene

$a = array_values(array_unique($a));

wollte aber nicht. Daher verwendet einfach das:

$a = array_unique($a);

Weitere Informationen zu array_unique auf php-welt.net


Neuste PHP Version unter Linux installieren

Zuerst die aktuelle Version (aktuell 5.2.5) als Quelltext besorgen und entpacken:

wget http://de3.php.net/get/php-5.2.5.tar.gz/from/this/mirror
tar -zxvf php-5.2.5.tar.gz
cd php-5.2.5

ein

./configure --help

liefert viele Informationen zu Verfügbaren Extesions die mit reinkompilierung werden können (more…)


Eine Datei mittels PHP hochladen

Für das hochladen einer Datei mit PHP ist folgender Code notwendig:

<?php
    if(!is_array($_FILES["datei"])){
        echo '<form action="index.php" method="post" enctype="multipart/form-data">
        <input type="file" name="datei"><br>
        <input type="submit" value="Hochladen">
        </form>'
;
    }else{
        move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']["name"]);
        echo "OK ist oben";
    }
?>

Die Datei befindet sich dann im Ordner upload. Dieser Ordner muss schreibrechte haben, am besten ihr setzt in zum testen die Rechte auf 777. Am besten ihr schützt den Uploadordner via .htaccess!


IP-Adresse des Besuchers in PHP herrausfinden

<?php
    $ip=$_SERVER['REMOTE_ADDR'];
    echo "Ihre IP-Adresse lautet $ip";
?>