سلام من میخوام داخل وب سایتم پادکست آپلود کنم اما یه مشکل دارم
عکس رو که آپلود میکنم مشکلی نیست و همه چیز رو بهم برمیگردونه (name-type-tmp_name)
array(5) { ["name"]=> string(36) "940f18c96bf1614ce2febe3a23844dca.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpthVSVW" ["error"]=> int(0) ["size"]=> int(10857) }
اما mp3 رو که آپلود میکنم کامل نمیاد مثلا tmp_name رو بهم نمیده که بتونم آپلود کنم یا type رو بهم نمیده
array(5) { ["name"]=> string(20) "پادکست (2).mp3" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }
مشکل کجاست؟؟؟؟
کد html
<form class="form" method="post" action="" enctype="multipart/form-data">
<div class="form-body">
<div class="form-group">
<label for="title"> عنوان پادکست </label>
<input type="text" id="title" class="form-control round"
name="title">
</div>
<div class="form-group">
<label for="audio"> تصویر </label>
<input type="file" id="img" class="form-control round"
name="img">
</div>
<div class="form-group">
<label for="audio"> فایل صوتی </label>
<input type="file" id="audio" class="form-control round"
name="audio">
</div>
<div class="form-group">
<label for="numpod"> شماره پادکست </label>
<input type="text" id="numpod" class="form-control round"
name="numpod">
</div>
<div class="form-group">
<div>
<textarea name="body" id="editor" cols="30" rows="10"></textarea>
</div>
</div>
<div class="form-group">
<label for="numpod"> مدت زمان پادکست </label>
<input type="text" id="timepod" class="form-control round"
name="timepod">
</div>
<div class="form-group">
<div>
<input type="hidden" name="dt" id="dt"
value="" />
</div>
</div>
</div>
<div class="form-actions">
<button type="submit" name="send" id="send" class="btn btn-primary">
<i class="icon-check2"></i> ارسال
</button>
</div>
</form>
کنترلر
public function insert(){
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['send'])){
$img = $_FILES['img'];
$audio = $_FILES['audio'];
$img = $this->uploadFile($img,"podcast/img");
$audio = $this->uploadpod($audio,"podcast/voice");
$this->pod->addpodcast($_POST,$img,$audio);
header("location:list");
}
return View::renderTemplate('admin.podcast.insert');
}
این کد آپلود یه تصویر سادست که کار میکنه
public function uploadFile($file, $dir)
{
if (isset($file)) {
$extension = explode(".", $file["name"]);
$type = $file['type'];
$size = $file['size'];
if ($type == "image/jpeg" || $type == "image/jpg" || $type == "image/png") {
if ($size <= 1000000) {
$new_name = md5(microtime()) . "." . $extension[1];
$path = "images/site/img-up/$dir/" . $new_name;
move_uploaded_file($file["tmp_name"], $path);
return $new_name;
} else {
echo "حجم فایل ارسالی نباید بیشتر از 1MB باشد";
return false;
}
} else {
echo "فرمت فایل ارسالی غیر مجاز است";
return false;
}
}
return true;
}
چون از فایل ارسالی که var_dump میگیرم همه چیز رو بهم میده و میتونم آپلود کنم
array(5) { ["name"]=> string(36) "940f18c96bf1614ce2febe3a23844dca.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpthVSVW" ["error"]=> int(0) ["size"]=> int(10857) }
ولی این کد دقیقا به همین شکله ولی کار نمیکنه
public function uploadpod($file, $dir)
{
var_dump($file);exit;
if (isset($file)) {
$extension = explode(".", $file["name"]);
$type = $file['type'];
$size = $file['size'];
if ($type == "audio/mpeg"){
if ($size <= 10000000) {
$new_name = md5(microtime()) . "." . $extension[1];
$path = "images/site/img-up/$dir/" . $new_name;
move_uploaded_file($file["tmp_name"], $path);
return $new_name;
} else {
echo "حجم فایل ارسالی نباید بیشتر از 5MB باشد";
return false;
}
} else
echo "فرمت فایل ارسالی غیر مجاز است";
return false;
}
}
return true;
}
چون مقدار type - tm_name-size هیچی رو به من نمیده فقط عنوان رو بهم برمیگیردونه
array(5) { ["name"]=> string(20) "پادکست (2).mp3" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }
کد های مدل رو نذاشتم چون فایل صوتی توی دیتابیس ثبت میشه فقط آپلود نمیشه
لطفا راهنماییم کنید ممنون
@hesammousavi
@ali.bayat
@mohsenbostan
@dfardabasi
یک دور upload_max_filesize و post_max_size رو توی php.ini بررسی کنیدکه اندازه حداکثر رو گذاشته باشید.
@mohsenbostan
اینی که فرمودید رو گذاشتم به فایل php.ini تو root سایت ساختم و این مقادیر رو داخلش گذاشتم
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 3000
max_input_vars = 6000
@dfardabasi
با استناد بر این قسمت از داکیومنت php، و اررور 1 که شما در یافت کردید مشکل از php.ini تون هستش:
https://www.php.net/manual/en/features.file-upload.errors.php#53278
@dfardabasi
طبق راهنمایی زیر مقادیر رو در php.ini اصلی قرار بدید :
https://hostadvice.com/how-to/how-to-edit-php-settings-in-apache-on-an-ubuntu-18-04-vps-or-dedicated-server/
@mohsenbostan
مشکل یه مورد بود و نوشته بود post_max_size باید همیشه بیشتر از upload_max_filesize باشه که منم تغییرش دادم
upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 3000
max_input_vars = 6000
ولی بازم کار نکرد
@dfardabasi
شما php.ini وب سرور رو تغییر دادید یا اونی که خودتون ساختید ؟ php.ini وب سرور ملاکه
@mohsenbostan
با هاستیگم تماس گرفتم گفتن که ما نمیتونیم برات تغییر بدیم خودتون باید یه فایل تو root اصلی ایجاد کنی مقادیری رو که میخوای تغییر بدی به اندازه دلخواهت
@dfardabasi
اگه هاستتون Cpanel هستش طبق لینک زیر تغییر بدید:
https://chemicloud.com/kb/article/how-to-increase-the-upload_max_filesize-limit-in-cpanel/
و اگه Directadmin هستش طبق لینک زیر :
https://www.betterhostreview.com/increase-max-file-upload-size-in-directadmin.html
طبق لینک cpanel نگاه میکنم ولی این گزینش نیست تو cpanel
فقط یه multiphp manager هست که فقط میتونم ورژن php رو عوض کنم دسترسی به php.ini سرور ندارم
فکر کنم چون هاست اشتراکیه اینطوری هستش
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟