PHP Yükleme Sayı

4 Cevap php

Benim geliştirme makinede dosya yükleme başlamak için bir kaç komut ile çalıştık. Sorun ben bir görüntü yüklemek için çalışın zaman bu operasyonun beklenen kolaylığı rağmen, Apache zaman aşımı gibi görünüyor olduğunu. Yükleme On ayarlanır ve tmp dizin php.ini ayarlanır.

Ben Google, bir 8.36KB görüntü ana-gif yükleyerek denedim. Bu güzel olmak ve iyi PHPs yükleme yetenekleri sınırlar içinde olmalıdır.

İşte yazısının bir kopyasıdır. Kolay bir düzeltme olmalıdır. Istendiği gibi, ben gerçek bir dizine tilde değiştirdi.

<?php 

if (!isset($_GET['upload'])) { ?>
  <form method="post" action="index.php?upload=true" enctype="multipart/form-data"> 
  <input type="file" name="file" class="form">
  <input name="submit" type="submit">
  </form>
<? } else  if (isset($_GET['upload']) && $_GET['upload'] == 'true') {
  $url = $_FILES['file']['name'];
    $move = move_uploaded_file($_FILES['file']['tmp_name'], "/Users/<username>/Sites/file.jpg");
    if ($move) {
    	echo "Success!";
    } else { 
    	echo "Err..."
    } 
} ?>

Thanks, Dan

EDIT:

Ben işaretlemek hangi birine, cevaplar birkaç yardımıyla, sabit.

Burada bir kaç şey, bu davranışa neden edilmiştir.

  1. images dizininde İzinler _www kullanıcı erişmek için izin ayarlanmış değil. A chmod -R 777 images bunu düzeltmek, hem de bir sudo chown _www images gibiydi.

  2. Form çıktısı PHP komut dosyası kendisi bozarak olabilir. Önerildiği gibi, bir ECHO <<< ...END yardım, sanırım.

4 Cevap

Bu dosya ve / veya Apache kullanıcı ve belirtilen dizinde arasında bir izin sorunu boyutu ile olası bir sorunu daha fazladır. Örneğin Apache örneği kullanıcı (kimse) altında çalışmadığından emin olun.

Comment to chaos: He is right the tilde (~) can cause issues, but would probably not cause a timeout; it would display a warning. Even if it does work on your system it would probably deposit the file into an unexpected directory or run into some issues if the Apache user (ie www) does not have a valid home directory set.

O Apache düpedüz bir şekilde başarısız, diyelim ki, zaman aşımına ziyade inanmak için neden bu nedir? Ne bana dışarı fırlayıp seni işe yaramaz neredeyse eminim ki, ~/file.jpg için dosyayı taşımak için çalışıyoruz olduğunu, çünkü; ~ normalde sadece kabuklar içinde anlamı olan bir yapıdır, PHP'nin garip belirsiz özelliklerinden biri bu gibi bağlamlarda işlenmesi sürece. Neyse, gerçek dizini koymayı deneyin.

Sorun dosya boyutu ise, php.ini dosyasına aşağıdaki satırları ekleyin ve çalışması gerekir:

upload_max_filesize = 500M ;
post_max_size = 500M ;

Varsayılan PHP sayfada 30 saniye zaman aşımı vardır. Upload uzun 30 saniye sürer bu yüzden eğer başarısız olur. Php.ini ya aşımını ayarlamak veya dosyanın en üstünde aşağıdaki kodu koyun.

ini_set(max_execution_time, 90);

İkinci argüman sayfa zaman aşımı önce saniye cinsinden zamanı temsil eder. Eğer uygun olduğunu hissediyorum ne zaman ayarlayın. Ayrıca, kaos o '~' genellikle sadece kabukları içinde anlam olan bir yapıdır doğrudur.

Re: http://ca2.php.net/manual/en/ini.list.php

EDIT: The problem is that you reopened the tag in the middle of a conditional. Trying your code I get a syntax error. It's strange that you were able to see any web form. This is the fixed code (that works for me).

<?php 
if (!isset($_GET['upload'])) { 
ECHO <<<END
  <form method="post" action="index.php?upload=true" enctype="multipart/form-data"> 
  <input type="file" name="file" class="form">
  <input name="submit" type="submit">
  </form>
END;
 } else  if (isset($_GET['upload']) && $_GET['upload'] == 'true') {
    $url = $_FILES['file']['name'];
    $move = move_uploaded_file($_FILES['file']['tmp_name'], "/Users/<username>/Sites/file.jpg");
    if ($move) {
        echo "Success!";
    } else { 
        echo "Err...";
    } 
} ?>