2013-08-21 2 views
0

이것은 내 업로드 시스템 코드이며, 파일을 업로드하고 mysql에 정보를 입력합니다. 작은 파일은 잘 작동하지만 큰 파일은 ftp에 나타나지 않으며, mysql 항목을 작성하지만 항목이 비어 있습니다.대용량 파일 업로드 안함

<?php 
$count = 0; 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    foreach ($_FILES['files']['name'] as $i => $name) { 
     if (strlen($_FILES['files']['name'][$i]) > 1) { 
      if (move_uploaded_file($_FILES['files']['tmp_name'][$i], 'upload/'.$name)) { 
       $count++; 
      } 
     } 
    } 
} 
?> 

<?php 
$link = mysql_connect('server', 'user', 'pass'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db(database); 

$title = $_POST['title']; 
$path= $name; 
$description = $_POST['description']; 

$sql = "INSERT INTO `videos` (`id` , `title` , `path` , `description`) 
VALUES (
NULL , '$title', '$path', '$description' 
);"; 
$result=mysql_query($sql); 
if(! $result) 
{ 
die('Could not update database: ' . mysql_error()); 
} 
echo "Uploaded successfully\n"; 
mysql_close(); 
?> 

페이지

<body> 
    <div class="wrap"> 

<form action="upload_script.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
      <form method="post" enctype="multipart/form-data"> 



       <input type="file" name="files[]" id="files" multiple directory="" webkitdirectory="" mozdirectory=""> 



<INPUT TYPE = "Text" VALUE ="title" NAME = "title"> 
<textarea name="description">descrtiption</textarea> 
       <input class="button" type="submit" value="Upload" /> 
     </form> 

    </div> 
    </body> 
</html> 
+2

오류를 켜기 만합니까? 아마도 최대 업로드 크기로 할 것입니다. – putvande

답변

0

at Netfirms PHP_Upload 제한은 기본적으로 20MB로 설정됩니다! 유사한 correpsonding 값을 사용하여 php.ini 파일을 생성하는 것은 작동하지 않을 경우

를 추가해보십시오 귀하의 .htaccess에 다음과 같은 : 그들은 마법의 수정있을거야

php_value post_max_size 100M 
php_value upload_max_filesize 100M 
php_value memory_limit 64M 

보장을; PHP 설정을 삽입하는 또 다른 방법입니다. G1에서 마이그레이션하는 데 시간 초과 문제가있는 경우에만 마지막 것을 사용하십시오. 그렇지 않으면 공유 호스팅에서 정확하게 미소 지어지지 않습니다.

+0

이것은 내 .htaccess입니다. 코드를 어디에 두어야합니까?+ FollowSymLinks를 <파일 htaccess로> 위해 허용, 거부 옵션은 모든 한다 RewriteCond % {REQUEST_FILENAME}에 한다 RewriteEngine! -f 한다 RewriteRule^([^ \에서 거부합니다. ] +?) \ /? $ $ 1.php [NC, L]

+0

다행히 문제가 해결되었습니다. :) –

2

당신은 upload_max_filesize에 대한 php.ini 파일을 확인해야합니다. 오류가 있습니까?

댓글을다는 평판이 충분하지 않습니다. 죄송합니다.

편집 : 호스팅 솔루션에서 호스팅하는 경우이 매개 변수를 수정할 수 없습니다.

+0

나는 php.ini를 가지고 있지 않다 나는 netfirms를 호스팅에 사용한다. 그것은 제어판의 어딘가에 있는가? –

0

문제는 대부분 업로드 크기가 제한되어 있으며 코드에서 아무 것도 실패 할 수 없다고 가정하기 때문에 PHP가 표시 할 수있는 오류 메시지가 표시되지 않습니다. 당신은 분명히 멀티 파일 업로드를하고있는 때문에

최소한, 당신은

if ($_FILES['name']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['name']['error']); 
} 

같은 것을해야한다, 당신이 그것을 처리하기 위해 국방부해야합니다,하지만 당신은 이런 일을해야합니다. http://www.php.net/manual/en/features.file-upload.errors.php

데이터베이스 코드는 SQL 주입 공격에 취약하고, 실제 업로드 이동 코드는 COMPLETE 원격 타협에 서버를 개방한다 :

오류 코드는 여기에 정의되어있다. 즉, 기본적으로 서버에 "kick me"기호가 매달려 있습니다.

0

당신은 스크립트가 실행 같은 폴더에 php.ini 파일을 배치하고 다음 줄을 추가 할 수 있습니다

upload_max_filesize = 100M 
post_max_size = 100M 
memory_limit = 64M 
max_input_time = 0 

0의 max_input_time 값은 업로드시 제한 시간을 의미합니다.

이상적으로는 시스템에서 원본 php.ini를 복사하여 루트에 넣고 재귀 적으로 해당 파일을 적용하여 웹 사이트에서 동일한 설정을 적용하는 것이 좋습니다.

재귀 적으로 php.ini를 설정하려면 .htaccess 파일을 통해 환경 변수 (setenv)를 설정해야합니다.

+0

일부 호스팅 회사는 기본 설정으로 수정할 수있는 php.ini 파일을 제공합니다. –