Мне нужно загрузить большой файл (до 190mb). Здесь приведены данные о сервере для ограничения:
memory_limit = 50M post_max_size = 192M file_uploads = On upload_max_filesize = 192M max_execution_time = 1800 sec max_input_time = 1800 sec
Вот мой код:
$query="update tbl_Cards set CardName='$cardname',Description='$Description'"; if($cardvideo) { if($_FILES["cardvideo"]["type"] == "video/quicktime"||$_FILES["cardvideo"]["type"] == "video/mov"||$_FILES["cardvideo"]["type"] == "video/mp4"||$_FILES["cardvideo"]["type"] == "video/mpv"||$_FILES["cardvideo"]["type"] == "video/3gp") { if($_FILES["cardvideo"]["size"]<=10485760) { $cardvideo=$date."card.mp4"; $tmppath3="services/video/".$cardvideo; if(move_uploaded_file($_FILES['cardvideo']['tmp_name'],$tmppath3)) { $thumb=$date.".jpg"; $thumbDirectory="services/VideoCapturePic/"; exec("convert \"{$tmppath3}[0]\" -colorspace RGB -geometry 200 $thumbDirectory$thumb"); $query.=",Video='$cardvideo',CapturePic='$thumb'"; } $query.="where CardId='$card'"; $result=mysql_query($query); if($result) { } else { echo mysql_error(); }
Но когда я загружаю файлы размером 10 МБ, они загружаются успешно, но когда я пытаюсь загрузить большие файлы (20 или 30 или 40 или 50), я получаю этот ответ:
Column count doesn't match value count at row
Что я делаю не так?
Это не только php.ini, но и сервер также может ограничить размер вашего запроса. Хотя по умолчанию в apache он не установлен, чтобы ограничить размер файла, но я думаю, что вы должны это проверить один раз. Директива LimitRequestBody используется для ограничения размера запроса. Проверьте директиву во всех файлах конфигурации (я предполагаю, что вы используете apache) и измените значение для своего каталога. Использование образца:
<Directory "/var/www/vhost/mydir/uploads"> LimitRequestBody 204444344 </Directory>
Я бы предложил использовать большой загрузчик файлов, например, http://www.uploadify.com/