Home » Wordpress » WordPress 3.3 Resim Yükleme Sorunu [Çözüm]

WordPress 3.3 Resim Yükleme Sorunu [Çözüm]

Merhaba değerli okuyucularım, Bundan önce sizlere wordpressin 3.3 sürümünde mediya bölümündeki resim yükleme sorunu yüzünden wordpress 3.3 sürümüne geçemediğimi söylemiştim. Yaklaşık bir, bir buçuk aydır arama tarama yaparak sorunu hallettim. meğer sorun file.php dosyasından kaynaklanıyormuş.
Öncelikle bilmeniz gereken şey, WordPress 3.3′te upload yani dosya yükleme fonksiyonunda değişiklik yapılmış olması. Zaten asıl sıkıntı bu noktada başlıyor.

WordPress 3.2 Dosya Yükleme Fonksiyonu

[php]function wp_handle_upload( &$file, $overrides = false, $time = null ) {
// The default error handler.
if ( ! function_exists( ‘wp_handle_upload_error’ ) ) {
function wp_handle_upload_error( &$file, $message ) {
return array( ‘error’=>$message );
}
}

$file = apply_filters( ‘wp_handle_upload_prefilter’, $file );

// You may define your own function and pass the name in $overrides[‘upload_error_handler’] $upload_error_handler = ‘wp_handle_upload_error’;

// You may have had one or more ‘wp_handle_upload_prefilter’ functions error out the file. Handle that gracefully.
if ( isset( $file[‘error’] ) && !is_numeric( $file[‘error’] ) && $file[‘error’] )
return $upload_error_handler( $file, $file[‘error’] );

// You may define your own function and pass the name in $overrides[‘unique_filename_callback’] $unique_filename_callback = null;

// $_POST[‘action’] must be set and its value must equal $overrides[‘action’] or this:
$action = ‘wp_handle_upload’;

// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}][‘error’].
$upload_error_strings = array( false,
__( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ),
__( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ),
__( "The uploaded file was only partially uploaded." ),
__( "No file was uploaded." ),
”,
__( "Missing a temporary folder." ),
__( "Failed to write file to disk." ),
__( "File upload stopped by extension." ));

// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
$test_form = true;
$test_size = true;
$test_upload = true;

// If you override this, you must provide $ext and $type!!!!
$test_type = true;
$mimes = false;

// Install user overrides. Did we mention that this voids your warranty?
if ( is_array( $overrides ) )
extract( $overrides, EXTR_OVERWRITE );

// A correct form post will pass this test.
if ( $test_form && (!isset( $_POST[‘action’] ) || ($_POST[‘action’] != $action ) ) )
return call_user_func($upload_error_handler, $file, __( ‘Invalid form submission.’ ));

// A successful upload will pass this test. It makes no sense to override this one.
if ( $file[‘error’] > 0 )
return call_user_func($upload_error_handler, $file, $upload_error_strings[$file[‘error’]] );

// A non-empty file will pass this test.
if ( $test_size && !($file[‘size’] > 0 ) ) {
if ( is_multisite() )
$error_msg = __( ‘File is empty. Please upload something more substantial.’ );
else
$error_msg = __( ‘File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.’ );
return call_user_func($upload_error_handler, $file, $error_msg);
}

// A properly uploaded file will pass this test. There should be no reason to override this one.
if ( $test_upload && ! @ is_uploaded_file( $file[‘tmp_name’] ) )
return call_user_func($upload_error_handler, $file, __( ‘Specified file failed upload test.’ ));

// A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
if ( $test_type ) {
$wp_filetype = wp_check_filetype_and_ext( $file[‘tmp_name’], $file[‘name’], $mimes );

extract( $wp_filetype );

// Check to see if wp_check_filetype_and_ext() determined the filename was incorrect
if ( $proper_filename )
$file[‘name’] = $proper_filename;

if ( ( !$type || !$ext ) && !current_user_can( ‘unfiltered_upload’ ) )
return call_user_func($upload_error_handler, $file, __( ‘Sorry, this file type is not permitted for security reasons.’ ));

if ( !$ext )
$ext = ltrim(strrchr($file[‘name’], ‘.’), ‘.’);

if ( !$type )
$type = $file[‘type’];
} else {
$type = ”;
}

// A writable uploads dir will pass this test. Again, there’s no point overriding this one.
if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads[‘error’] ) )
return call_user_func($upload_error_handler, $file, $uploads[‘error’] );

$filename = wp_unique_filename( $uploads[‘path’], $file[‘name’], $unique_filename_callback );

// Move the file to the uploads dir
$new_file = $uploads[‘path’] . "/$filename";
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $new_file ) )
return $upload_error_handler( $file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $uploads[‘path’] ) );

// Set correct file permissions
$stat = stat( dirname( $new_file ));
$perms = $stat[‘mode’] & 0000666;
@ chmod( $new_file, $perms );

// Compute the URL
$url = $uploads[‘url’] . "/$filename";

if ( is_multisite() )
delete_transient( ‘dirsize_cache’ );

return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $new_file, ‘url’ => $url, ‘type’ => $type ), ‘upload’ );
}[/php]

WordPress 3.3 Dosya Yükleme Fonksiyonu

[php]function wp_handle_upload( &$file, $overrides = false, $time = null ) {
// The default error handler.
if ( ! function_exists( ‘wp_handle_upload_error’ ) ) {
function wp_handle_upload_error( &$file, $message ) {
return array( ‘error’=>$message );
}
}

$file = apply_filters( ‘wp_handle_upload_prefilter’, $file );

// You may define your own function and pass the name in $overrides[‘upload_error_handler’] $upload_error_handler = ‘wp_handle_upload_error’;

// You may have had one or more ‘wp_handle_upload_prefilter’ functions error out the file. Handle that gracefully.
if ( isset( $file[‘error’] ) && !is_numeric( $file[‘error’] ) && $file[‘error’] )
return $upload_error_handler( $file, $file[‘error’] );

// You may define your own function and pass the name in $overrides[‘unique_filename_callback’] $unique_filename_callback = null;

// $_POST[‘action’] must be set and its value must equal $overrides[‘action’] or this:
$action = ‘wp_handle_upload’;

// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}][‘error’].
$upload_error_strings = array( false,
__( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ),
__( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ),
__( "The uploaded file was only partially uploaded." ),
__( "No file was uploaded." ),
”,
__( "Missing a temporary folder." ),
__( "Failed to write file to disk." ),
__( "File upload stopped by extension." ));

// All tests are on by default. Most can be turned off by $overrides[{test_name}] = false;
$test_form = true;
$test_size = true;
$test_upload = true;

// If you override this, you must provide $ext and $type!!!!
$test_type = true;
$mimes = false;

// Install user overrides. Did we mention that this voids your warranty?
if ( is_array( $overrides ) )
extract( $overrides, EXTR_OVERWRITE );

// A correct form post will pass this test.
if ( $test_form && (!isset( $_POST[‘action’] ) || ($_POST[‘action’] != $action ) ) )
return call_user_func($upload_error_handler, $file, __( ‘Invalid form submission.’ ));

// A successful upload will pass this test. It makes no sense to override this one.
if ( $file[‘error’] > 0 )
return call_user_func($upload_error_handler, $file, $upload_error_strings[$file[‘error’]] );

// A non-empty file will pass this test.
if ( $test_size && !($file[‘size’] > 0 ) ) {
if ( is_multisite() )
$error_msg = __( ‘File is empty. Please upload something more substantial.’ );
else
$error_msg = __( ‘File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.’ );
return call_user_func($upload_error_handler, $file, $error_msg);
}

// A properly uploaded file will pass this test. There should be no reason to override this one.
if ( $test_upload && ! @ is_uploaded_file( $file[‘tmp_name’] ) )
return call_user_func($upload_error_handler, $file, __( ‘Specified file failed upload test.’ ));

// A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
if ( $test_type ) {
$wp_filetype = wp_check_filetype_and_ext( $file[‘tmp_name’], $file[‘name’], $mimes );

extract( $wp_filetype );

// Check to see if wp_check_filetype_and_ext() determined the filename was incorrect
if ( $proper_filename )
$file[‘name’] = $proper_filename;

if ( ( !$type || !$ext ) && !current_user_can( ‘unfiltered_upload’ ) )
return call_user_func($upload_error_handler, $file, __( ‘Sorry, this file type is not permitted for security reasons.’ ));

if ( !$ext )
$ext = ltrim(strrchr($file[‘name’], ‘.’), ‘.’);

if ( !$type )
$type = $file[‘type’];
} else {
$type = ”;
}

// A writable uploads dir will pass this test. Again, there’s no point overriding this one.
if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads[‘error’] ) )
return call_user_func($upload_error_handler, $file, $uploads[‘error’] );

$filename = wp_unique_filename( $uploads[‘path’], $file[‘name’], $unique_filename_callback );

$tmp_file = wp_tempnam($filename);

// Move the file to the uploads dir
if ( false === @ move_uploaded_file( $file[‘tmp_name’], $tmp_file ) )
return $upload_error_handler( $file, sprintf( __(‘The uploaded file could not be moved to %s.’ ), $uploads[‘path’] ) );

// If a resize was requested, perform the resize.
$image_resize = isset( $_POST[‘image_resize’] ) && ‘true’ == $_POST[‘image_resize’];
$do_resize = apply_filters( ‘wp_upload_resize’, $image_resize );
$size = @getimagesize( $tmp_file );
if ( $do_resize && $size ) {
$old_temp = $tmp_file;
$tmp_file = image_resize( $tmp_file, (int) get_option(‘large_size_w’), (int) get_option(‘large_size_h’), 0, ‘resized’);
if ( ! is_wp_error($tmp_file) ) {
unlink($old_temp);
} else {
$tmp_file = $old_temp;
}
}

// Copy the temporary file into its destination
$new_file = $uploads[‘path’] . "/$filename";
copy( $tmp_file, $new_file );
unlink($tmp_file);

// Set correct file permissions
$stat = stat( dirname( $new_file ));
$perms = $stat[‘mode’] & 0000666;
@ chmod( $new_file, $perms );

// Compute the URL
$url = $uploads[‘url’] . "/$filename";

if ( is_multisite() )
delete_transient( ‘dirsize_cache’ );

return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $new_file, ‘url’ => $url, ‘type’ => $type ), ‘upload’ );
}[/php]

Hatalı olan kod ise; (Düşünülen)

[php]// Copy the temporary file into its destination
$new_file = $uploads[‘path’] . "/$filename";
copy( $tmp_file, $new_file );
unlink($tmp_file);[/php]

Çözüm:

  1. wp-admin/includes/file.php dosyasını bir editör yardımıyla açınız.
  2. Aşşağıda verilen 3.3 sürümündeki dökümanda arayın
  3. Bulduğunuz kodları yukarıdaki verilen kodlar ile değiştirin.

Yapamadım;

O zaman dosyayı buraya tıklayarak direk indirin ve wp-admin/includes/ klasörün içersine atın.

Dosyayı indirmek için BURAYA tıklayın
Dosya rar şifresi eyildirmaz.com‘dur

Hakkında Emre

Galatasaraylı Bir Michael Jackson Hayranı... 1996 yılında kasa montajı ile başladığı bilgisayar serüveni onu sırasıyla notebook tamiratı, web sitesi tasarım ve yönetimi, editörlük ve danışmanlık hizmetlerine kadar getirdi, hala kıramadığı firmalarla site çalışmalarına devam etmesine karşın, sosyal medya üzerine odaklı.

8 Yorumlar

  1. wp mu bir sitem var ve resim yükleyemiyorum, sorun sizin yazınızdaki gibi çözülmedi yada wp content ve uploads ı 777 yaparak başka ne yapabilirim acaba.

    • Merhaba @Ali;

      Yönetim panelinizden saklanacak dosyalarınızın yolunu değiştirebilirsiniz. Örneğin ‘dosyalar’ yazın wordpress kurulu dizine ‘dosyalar’ diye bir klasör oluşturup içersinde index.html (boş) atın. ardından ‘dosyalar’ klasörüne izin modunu (CHMOD) 777 değerinde verin.

      (Şuan ben öyle kullanıyorum)

  2. merhaba, bu wp ne acayip bir durum gerçekten. Kullanışlı olmasına kullanışlı fakat bunun neresini tutarsanız elinizde kalıyor. Bu kadar çokmu sorun yaratır wp. Resim yüklerken birden bire hata verdi, ben bir yerini yapıyorum bir yeri bozuluyor şaşırdım kaldım. Bu wp'e bir çare yok mu hiç hem mi bozulur bu sürekli ?

    • Merhaba Sedat bey;
      Wordpress çalışmalarınız durduk yere mi hata veriyor? Yoksa siz değişiklik yaptığınızda mı hata alıyorsunuz? WordPress sisteminin bu güne kadar ki yayımlanan sürümlerinde ben hiç bir hata ile karşılaşmadım.

  3. Acaba bu sorunu herkes yaşıyor mudur?
    Güncelleme için herhangi ekstra bir şey yapmadım ancak resim veya diğer türde dosyaları yüklemede sorun yaşamadım.

  4. Biz genelde bu tarz şeylerde kaynak belirtirdik.
    http://www.ifelseweb.com/wordpress-3-3-resim-yukl

    İyi bloglamalar..

    • Kussra bakmayın mod kurdum denemek için html mod'a dönüş yapmak zorunda kaldım. Kaynak belirtmediğim (dışardan aldığım konular) yok zaten. Öyle bir alışkanlığım yok çünki.

      Kaynak tekrar eklendi.

  5. Teşekür Ederim emre kardesim. Süper bir makale sorunu olan Kolayca çözer.

error: