Safemode und upload_tmp_dir im WordPress

WordPress suckt hart!
Hab grade ewig versucht Uploads im WordPress hinzukriegen damit ich im Editor oben auf das Bildersymbol klicken kann und Bildchen hochladen kann.

Nachdem ich Ewigkeiten am safemode selber gebastelt hab, damit das blöde PHP rafft, dass es in seinem kleinen Verzeichnis bleiben soll, gab es dann Probleme mit dem Upload Temp Dir.

Meine Einstellungen waren dann im Endeffekt:

php_admin_flag safe_mode On
php_admin_value open_basedir /var/www/
php_admin_value upload_tmp_dir /var/www/tmp_myangelone/
php_admin_value file_uploads 1

WordPress versucht aber trotzdem prinzipiell nach /tmp/ zu laden.
Was sich mit dem Savemode nicht so wirklich verträgt.

Nach längerem grübeln und rumsuchen hab ich das Problem gefunden.

In wp-admin/includes/file.php war der Übeltäter.

function get_temp_dir() {
if ( defined(‘WP_TEMP_DIR’) ) return trailingslashit(WP_TEMP_DIR);

$temp = WP_CONTENT_DIR . ‘/’;

if ( is_dir($temp) && is_writable($temp) ) return $temp;

if  ( function_exists(‘sys_get_temp_dir’) ) return trailingslashit(sys_get_temp_dir());

return ‘/tmp/’;

}

Was macht die Funktion?

Guckt nach, ob WP_TEMP_DIR in wp-config.php gesetzt ist (was es nicht ist, weil undokumentiert).
Dann guckt sie, ob das WordPress Hauptverzeichnis an sich schreibbar ist.
Dann versucht sie die Funktion sys_get_temp_dir() aufzurufen, die wahrscheinlich /tmp/ liefert.
Und wenn gar nix klappt, wird auf jeden Fall /tmp/ zurückgegeben.

Das war wohl bei mir der Fall.

Abhilfe schafft hier folgendes:

In wp-config.php folgende Zeile rein:

define(‘WP_TEMP_DIR’,’/var/www/tmp_myangelone/’);

Und schon klappts auch mittm Safemode.

Leave a Reply