PHP: Upload Limit erhöhen

upload limit
PHP hat einen Standardwert von 2MB für einen Dateiupload. Damit kann man heutzutage natürlich nicht viel anfangen und sprengt dieses Limit bereits mit einem Foto. Um das Upload LImit zu erhöhen gibt es verschiedene Wege:

1. PHP.ini

Also erste Möglichkeit könnt ihr die php.ini bearbeiten.  Diese Möglichkeit setzt für euren kompletten Server die Werte, also nicht immer die richtige Wahl.
Geht in die PHP.ini (/etc/php5/apache2/php.ini) und ändert die folgenden Werte:

upload_max_filesize = 10M
post_max_size = 10M

2. .htaccess

Weiterhin habt ihr die Möglichkeit die Upload Limits über die Htaccess einzustellen. Vorteil der HTACCESS Lösung: Upload Limits können für Ordner / Bereiche individuell festgelegt werden. Öffnet die .htaccess für den notwendigen Bereich und fügt folgendes ein:

php_value upload_max_filesize 10M
php_value post_max_size 10M

3. @ini set

Nicht immer aktiviert aber durchaus auch eine gängige Methode sind die ini_sets. Einfach innerhalb des Upload Scripts diese 2 Zeilen einfügen:

@ini_set( 'upload_max_size' , '10M' );
@ini_set( 'post_max_size', '10M');

4. eigene PHP.ini

Bei manchen Hostern auch durchaus gebräuchlich, sind eigene PHP.ini Dateien in den Verzeichnissen. Erstellt in euerm Scriptordner eine Datei mit dem namen „php.ini“ und fügt folgende Zeilen ein:

file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M

upload_max_filesize = 64M
post_max_size = 64M

Weiterlesen

PHP: Alle Fehlermeldungen ausgeben

Auf der Suche nach einem Fehler kann man manchmal verzweifeln, doch oft liegt die Abhilfe sehr nahe. Mit einem Zweizeiler könnt ihr euch anzeigen lassen wo euer Fehler liegt.

error_reporting(E_ALL);
ini_set('display_errors', 1);


 
Ab jetzt werden alle Fehler ausgegeben. Jedoch ist es nicht unbedingt immer Ideal es dauerhaft aktiviert zu lassen, daher kann man es auch einfach Abhängig von einem GET Parameter machen.
Ruft ihr dann beim Entwickeln z.B. http://meineseite.de?debug=1 auf, so bekommt ihr die Fehlermeldungen angezeigt.

if(isset($_GET['debug']) && $_GET['debug'] == 1) {
   error_reporting(E_ALL);
   ini_set('display_errors', 1);
}

Weiterlesen

PHP: Array zu Object Array (Std) konvertieren

Du hast ein Array und brauchst es aber als Object? Oder du willst die Vorzüge vom Std Object nutzen? Mit dieser kleinen Funktion hast du in windeseile dein Array in ein schönes Object umgewandelt.

Die Funktion ruft sich rekursiv auf, somit können auch mehrdimensionale Arrays ohne Probleme in ein Object konvertiert werden.

function arrayToObject($arr) {
        $object = new stdClass();
        foreach ($arr as $key => $val) {
            if (is_array($val)) {
                $val = arrayToObject($val);
            }
            $object->$key = $val;
        }
        return $object;
    }

Weiterlesen

Piwik Besucherzahlen auf der Pebble mit „Cards“

Da es im Pebble Store leider keine Watchface gibt, die einem die Besucherzahlen von Piwik auf der Uhr darstellt heißt es selber bauen. Es gibt verschiedene Apps für die Pebble die Inhalte vom eigenen Server anzeigen können. Optisch gefällt mir Cards for Pebble am Besten, daher mal das Tutorial an diesem Beispiel.

Piwik auf der Pebble
Erste Zeile: Abkürzung der Website, Uhrzeit letzter Aktualisierung
Zweite Zeile: Besucher Heute (Impressionen Heute)
Dritte Zeile: Besucher Gestern (Impressionen Gestern)

 

Die Umsetzung ist recht einfach, man erstellt eine PHP Datei auf seinem Server die die Piwik Daten verarbeitet und einen JSON für Cards ausgibt. Mein Script ist recht Simpel gehalten und sieht folgendermaßen aus:

 

<?php
$site_id = 5;
$api_key = 'dbjkbjioajioajjbdkljbklj';
$piwik_url = 'http://piwik.schnipsellager.de/'; // ohne index.php! , ohne Slash am Ende

$file = file_get_contents($piwik_url.'/index.php?module=API&method=VisitsSummary.get&idSite='.$site_id.'&period=day&date=today&format=JSON&token_auth='.$api_key.'');

$today = json_decode($file);

$file = file_get_contents($piwik_url.'/index.php?module=API&method=VisitsSummary.get&idSite='.$site_id.'&period=day&date=yesterday&format=JSON&token_auth='.$api_key.'');

$yesterday = json_decode($file);

$ret = array();
$ret['content'] = "SL            ".date('H:i')."\n";
$ret['content'].= "H:     ".fill($today->nb_visits).$today->nb_actions."\n";
$ret['content'].= "G:     ".fill($yesterday->nb_visits).$yesterday->nb_actions."";
$ret['refresh_frequency'] = 30;

// Array in JSON Wandeln und ausgeben
echo json_encode($ret);

function fill($var) {
    $len = 9;
    $newlen = $len = $len - strlen($var);
    return str_pad($var, $newlen); 
}

 

Das Script holt sich von euer Piwik Installation die Informationen zu den Besuchern von Heute und Gestern. Dann wird der JSON in ein Array geparst und wir setzen und ein Return Array zusammen. Der erstellte JSON besteht lediglich aus „content“ und „refresh_frequency“. Content beinhaltet alles was auf der Pebble später angezeigt wird, refresh_frequency bestimmt die Aktualisierungsrate in Minuten.

Die Formatierung ist einfach gehalten: Durch Leerzeichen kann man sich die Zeilen auf dem kleinen Display in die richtige Position rücken. Mit STR_PAD werden die Besucher des aktuellen Tages auf Mind. 5 Zeichen aufgefüllt.

 

 

SiteID ? API Key?

Die SiteID findet ihr einfach in der Adresszeile wenn ihr die Berichte einer Website anschaut: index.php?module=CoreHome&action=index&idSite=5

Für den API Key klickt oben auf Admin (oder euren Username) und anschließend Links auf API. Jetzt seht ihr einen Eintrag mit Token Auth, da kopiert ihr euch alles fett makierte.

piwikapi7

 

Wie richte ich Cards ein?

Screenshot_2015-08-30-16-40-08Cards for Pebble ist schnell eingerichtet. Kurz im Pebble Store installieren und in der anschließenden Einstellungsmaske unten auf Custom klicken. Ihr müsst nun nur die URL ändern und ab sofort habt ihr die Besucherzahlen eurer Website immer am Handgelenk.

 

Weiterlesen

PHP: Copyright mit automatischer Jahreszahl

Immerwieder schön ist es im Footer zu lesen: © by Firma 1997 bis 2012. 

Liest sich so, als wenn die Firma 2012 eingestellt wurde, ist jedoch meistens einfach die letzte Aktualisierung der Website gewesen.

Um diesen Fauxpas zu vermeiden sollte man hier einfach mit Date das aktuelle Jahr generieren, dann kann man auch nie wieder vergessen alljährlich die Jahreszahl zu editieren.

&copy by schnipsellager.de 1954 bis <?php echo date('Y'); ?>

Weiterlesen

WordPress: Kategorie aus Feed ausschließen

Wenn du im Feed bestimmte Kategorien nicht haben möchtest, so kannst du dir entweder unzählige Plugins installieren oder einfach einen Schnipsel in deine Functions.php einfügen.

Die Vorgehensweise ist eigentlich recht einfach, es wird ein Filter für die allgemeine Query pre_get_posts Funktion gesetzt. Dort wird geprüft ob gerade ein Feed ausgegeben wird. Ist dem so, dann wird die Kategorie mit der ID 5 ausgeschlossen.


function sl_exclude_from_feed($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); 
    }
return $query;
}

add_filter('pre_get_posts','sl_exclude_from_feed');

Das ganze funktioniert auch wunderbar wenn man aus der Suche eine Kategorie ausschließen möchte.

Weiterlesen

WordPress: Copyright im Footer entfernen

Bei den meisten Themes ist im Footer ein Hinweis auf den Author des Themes oder auch auf WordPress selbst eingebaut.

So zeigen die Standard Themes in der Regel: Stolz präsentiert von WordPress .

Jedoch ist dieser Hinweis nicht immer erwünscht und macht es sogar Hackern einfacher einen WordPress Blog zu finden (google: „site:.de stolz präsentiert von WordPress“).

Das Entfernen ist schnell gemacht. Mit dem FTP Client (oder Admin->Design->Editor) die Datei Footer.php eures Themes öffnen und folgendes Entfernen:

<a href="<?php echo esc_url( __( 'http://wordpress.org/', 'twentytwelve' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentytwelve' ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentytwelve' ), 'WordPress' ); ?></a>

Darf ich es überhaupt entfernen? Aufgrund der GPL Lizens unter der WordPress veröffentlich wird ist eine Entfernung des Hinweises kein Problem. Wer will kann WordPress aber einen Backlink im Impressum spendieren.
Anders sieht es natürlich bei anderen Themes aus, hier sollten unbedingt die Lizensbedingungen studiert werden, sonst kann es schnell zu einer Abmahnung kommen.

Weiterlesen

PHP Mail Log – Absendendes Script finden

Wer schonmal ein angegriffenes System hatte, welches zum spammen missbraucht wurde, weiß wie nervig es ist alle Spuren zu entdecken. Die Mail Queue füllt sich, aber man findet nirgends die Quelle.

Seit PHP 5.3 gibt es eine neuen Option die den PhPmailer gesprächig macht.

Durch folgende option in der php.ini kann das loggen von Mails inklsuvie ausführendes Script aktiviert werden.

;PHP.INI /etc/php5/apache2/php.ini bearbeiten
mail.add_x_header = On
mail.log = /var/log/phpmail.log

Apache neustarten und ab jetzt werden alle Mailaktionen geloggt.

/etc/init.d/apache2 restart

Ein Beispiel Eintrag sieht dann so aus – gleich am Anfang steht nun das absendende Script. 

mail() on [/var/www/schnipsellager.de/wp-includes/class-phpmailer.php:652]: To: XXX@xxx:COM — Headers: Date: Sun, 23 Aug 2015 17:36:26 +0000 From: WordPress <wordpress@schnipsellager.de> Message-ID: <fafa1faa791bcdfe17fc4933610231c1@schnipsellager.de> X-Priority: 3 X-Mailer: PHPMailer 5.2.10 (https://github.com/PHPMailer/PHPMailer/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit

Weiterlesen

Mysqli Spickzettel

MySQLI ist eine feine Sache und im Vergleich zur alten MySQL Unterstützung in PHP ein echter Traum. Anbei ein paar nützliche Beispiele.

Verbindung erstellen

$con = new mysqli("localhost", "testuser", "testpassword", "testdatenbank");

 

Datensätze holen

$res = $con->query("SELECT * FROM irgendwas");
while($row = $res->fetch_object()) {
   echo $row->name;
}

 

Datenbank wechseln

$con->select_db("andereDB");

 

Fehler ausgeben

$con->error;

 

Anzahl an Einträgen ausgeben

$res = $con->query("SELECT * FROM irgendwas");
$anzahl = $res->num_rows;

 

Letzten Auto Increment Wert ausgeben

$con->insert_id;

 

Weiterlesen