Garip PHP dosya yükleme sorunu

5 Cevap php

Benim windows sistemdeki dosya yükleme ile ilgili garip sorunlar yaşıyorum. Ben sunucu üzerinde IIS7 ile windows 7 kullanıyorum. Ben yerel IP ile bir istemci comp çalışıyorum 10.47.47.13 ve sunucu 10.47.47.1 olduğunu.

Ben bazı durumlarda işe gelemedi çok basit bir form var. Sayfa wwwroot kalır. (Http://10.47.47.1/3.php)

3.php

<?php
 $source_file=$_FILES["newsimg"]["tmp_name"];   
 $destination_file="123.jpg";
 $ftp_server="localhost";
 $ftp_username="admin";
 $ftp_password="apple";

  if ($source_file!="") {
    $mrph_connect = ftp_connect($ftp_server,21);
    $mrph_login= ftp_login($mrph_connect, $ftp_username, $ftp_password);   
    if (($mrph_connect) && ($mrph_login)) {
      $upload = ftp_put($mrph_connect, $destination_file, $source_file, FTP_BINARY);
      if ($upload) echo "ok"; else echo "nok";
    }
  }

?>

<body>
<form enctype="multipart/form-data" action="3.php" method="POST">
  <input type=file  name=newsimg>
  <input type=submit name=mrph>
</form>
</body>

Form dosya yüklemek için kendini çağırır. Ben boyutu 1 veya 2 KB'lık bir dosyayı seçtiğinizde ben bir süre sonra bile 10 15KB sayfa zaman aşımına uğrayan bir dosya seçtiğinizde çalışır ama. Ben php.ini ayarları dosya yükleme Ben sadece test etmek için c:\uploads olarak temp klasörü ayarlamak, üzerinde kontrol etti. Dediğim gibi dosyalar boyutu 1 VEYA 2KB İÇİN ÇALIŞIYOR AMA 10 YA 20KB BİR DOSYA SEÇİMİ BİLE ZAMAN. Ben bile hiçbir şey çalıştığını yapıldığında görmek için PHP kodu (yorumladı her şeyi) kaldırıldı ama olmadı.

Herhangi bir yardım mutluluk duyacağız.

5 Cevap

Bana göre, sorun, sunucu dosyanızı karşıya nerede gibi görünüyor; yükleme ile yanlış bir şey yok küçük dosyaları upload size are mümkün ama 20 kb büyüklükteki dosyaları yüklediğinizde, doğru yükleme ayarları yüklemek istediğiniz sunucu üzerinde belirtilen olduğundan emin olmak için kontrol, başarısız çünkü dosya. Bir different server/location kendisine ftp ve yükleme kullanarak rağmen yavaş bir süreçtir. Sizin kod da doğru gibi görünüyor.

Benim tahminim ftp_put PHP'nin varsayılan aşağıya FTP aşımı eşiği (30 saniye) olarak ayarlamaya çalışın, zaman aşımına olmasıdır:

$mrph_connect = ftp_connect($ftp_server,21);

ftp_set_option($mrph_connect, FTP_TIMEOUT_SEC, 20);

$mrph_login= ftp_login($mrph_connect, $ftp_username, $ftp_password);   
if (($mrph_connect) && ($mrph_login)) {
  $upload = ftp_put($mrph_connect, $destination_file, $source_file, FTP_BINARY);
  if ($upload) echo "ok"; else echo "nok";
}

Bu ayarlamayı yapma script 'nok' dönmek için neden o zaman koymak çok uzun sürüyor bileceksiniz.

Koymak senin sorunun ise, ftp_nb_put uyumsuz dosyayı FTP olmayan bir engelleme ile koymak deneyin:

$mrph_connect = ftp_connect($ftp_server,21);
$mrph_login= ftp_login($mrph_connect, $ftp_username, $ftp_password);   
if (($mrph_connect) && ($mrph_login)) {

  $ret = ftp_nb_put($mrph_connect, $destination_file, $source_file, FTP_BINARY);
  while ($ret == FTP_MOREDATA) {
    $ret = ftp_nb_continue($mrph_connect);
  }

  if ($ret == FTP_FINISHED) echo "ok"; else echo "nok";
}

Ben php.ini dosyası doğru yapılandırılmamış olabilir ki, Cryo şey üzerine olduğunu düşünüyorum ve maksimum dosya boyutu düşük nedir?

Bu olmayabilir ama kayıt için form bayt sayısı maksimum yükleme boyutu karşılık gelen bir MAX_FILE_SIZE gizli girişi olmalı

Eğer düşük dosya boyutu limiti olabilir. Bunu denetlemek için: eklemelisin ya da her neyse adı verilen yeni bir php dosyası oluşturun ve sadece yazmak

<?php
phpinfo();
?>

Tarayıcı bu sayfayı açın ve upload_max_filesize arayın. Bunun için değerini kontrol edin; sadece bir kaç kilobayt ise, bu senin sorunun. Bu durumda ise, sizin php.ini değiştirmek zorunda kalacak (Apache altında siz de bir. Htaccess dosyasında bir yönerge kullanabilirsiniz, ama ben IIS için böyle bir şey olduğunu sanmıyorum). Bu dosyanın konumu kurulumuna bağlı olarak farklı olabilir, ama muhtemelen C:\Windows\php.ini bulunuyor. upload_max_filesize direktifini bulun ve daha büyük bir şeyle değiştirmek. Varsayılan 2 megabayt (2M) ama bunu ne yapabilirsiniz.