পিএইচপি-তে ফাইল আপলোড করার সময় কেন $ _FILES খালি থাকবে?


145

আমার উইন্ডোজ computer কম্পিউটারে আমার ওয়্যাম্প সার্ভার 2 ইনস্টল করা আছে। আমি অ্যাপাচি ২.২.১১ এবং পিএইচপি ৫.২.১১ ব্যবহার করছি। আমি যখন কোনও ফর্ম থেকে কোনও ফাইল আপলোড করার চেষ্টা করি তখন এটি আপলোড বলে মনে হয় তবে পিএইচপি-তে $_FILESঅ্যারেটি খালি থাকে। c:\wamp\tmpফোল্ডারে কোনও ফাইল নেই । আমি php.iniফাইল আপলোড এবং এগুলি অনুমোদিত করার জন্য কনফিগার করেছি । tmpফোল্ডারের বর্তমান ব্যবহারকারীর জন্য / লেখা বিশেষাধিকার পড়েছেন। আমি স্ট্যাম্পড

এইচটিএমএল:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <form enctype="multipart/form-data" action="vanilla-upload.php" method="POST">
        Choose a file to upload: <input name="uploadedfile" type="file" /><br />
        <input type="submit" value="Upload File" />
    </form>
</body>
</html>

পিএইচপি:

<?php
echo 'file count=', count($_FILES),"\n";
var_dump($_FILES);
echo "\n";
?>

2
আপনি ত্রুটি লগ চেক করেছেন?
বায়রন হুইললক

আমি নিশ্চিত যে এমন কিছু বোবা যা আপনি উপেক্ষা করছেন। উদাহরণস্বরূপ, আপনি কি কোডটি রাখার বিষয়ে নিশ্চিত vanilla-upload.php?
লুকা ম্যাটেইস

হা আমি একই সমস্যা ছিল। আমি ত্রুটির লগগুলি পরীক্ষা করেছি এবং এটিতে বলা হয়েছে যে কোনও ফাইল আপলোড করা হচ্ছে যা সর্বোচ্চ অনুমোদিত আকারের চেয়ে বেশি।
ব্রাইটইন্টেলডাস্ক

উত্তর:


493

পিএইচপি-তে ফাইল আপলোডের জন্য এখানে একটি চেক-তালিকা রয়েছে:

  1. এর জন্য php.ini পরীক্ষা করুন:
    file_uploads = On
    post_max_size = 100M
    upload_max_filesize = 100M

    • আপনার ব্যবহারের প্রয়োজন হতে পারে .htaccessবা .user.iniযদি আপনি ভাগ করে নেওয়া হোস্টিংয়ে থাকেন এবং এতে অ্যাক্সেস নেই php.ini
    • আপনি সঠিক ini ফাইলটি সম্পাদনা করছেন তা নিশ্চিত করুন - phpinfo()আপনার সেটিংসটি আসলে প্রয়োগ হচ্ছে তা যাচাই করতে ফাংশনটি ব্যবহার করুন ।
    • এছাড়াও আপনি মাপগুলি ভুল বানান না তা নিশ্চিত করুন - এটি হওয়া উচিত 100M নয় 100MB
  2. আপনার <form>ট্যাগের enctype="multipart/form-data"বৈশিষ্ট্য রয়েছে তা নিশ্চিত করুন । অন্য কোনও ট্যাগ কাজ করবে না, এটি আপনার ফর্ম ট্যাগ হতে হবে। এটি সঠিকভাবে বানান হয়েছে কিনা তা ডাবল পরীক্ষা করে দেখুন । ডাবল চেক করুন যে মাল্টিপার্ট / ফর্ম-ডেটা চারপাশে স্ট্রাইট কোটস দ্বারা বদ্ধ করা হয়েছে, কোনও ওয়ার্ড থেকে বা কোনও ওয়েবসাইট ব্লগ থেকে স্মার্ট কোটগুলি আটকানো হয়নি (ওয়ার্ডপ্রেস সোজা উদ্ধৃতিগুলিকে অ্যাঙ্গেল কোটে রূপান্তর করে!)। পৃষ্ঠাটিতে যদি আপনার একাধিক ফর্ম থাকে তবে নিশ্চিত হয়ে নিন যে তাদের উভয়েরই এই বৈশিষ্ট্য রয়েছে। সেগুলি ম্যানুয়ালি টাইপ করুন বা ম্যানুয়ালি টাইপ করা সরল একক উদ্ধৃতি চেষ্টা করুন।

  3. একই nameবৈশিষ্ট্য সহ আপনার কাছে দুটি ইনপুট ফাইল ক্ষেত্র নেই তা নিশ্চিত করুন । যদি আপনার একাধিক সমর্থন প্রয়োজন হয় তবে নামের শেষে বর্গাকার বন্ধনী রাখুন:

    <input type="file" name="files[]">
    <input type="file" name="files[]">
  4. আপনার টিএমপি এবং আপলোড ডিরেক্টরিগুলিতে সঠিক পঠন + লেখার অনুমতি সেট রয়েছে তা নিশ্চিত করুন। অস্থায়ী আপলোড ফোল্ডার হিসাবে পিএইচপি সেটিংসে নির্দিষ্ট করা আছে upload_tmp_dir

  5. আপনার ফাইলের গন্তব্য এবং tmp / আপলোড ডিরেক্টরিগুলির মধ্যে ফাঁকা স্থান নেই তা নিশ্চিত করুন।

  6. <form>আপনার পৃষ্ঠায় থাকা সকলের কাছে </form>নিবিড় ট্যাগ রয়েছে তা নিশ্চিত করুন ।

  7. আপনার ফোরাম ট্যাগ রয়েছে তা নিশ্চিত করুন method="POST"। জিইটি অনুরোধগুলি মাল্টিপার্ট / ফর্ম-ডেটা আপলোডগুলিকে সমর্থন করে না।

  8. আপনার ফাইল ইনপুট ট্যাগটিতে একটি NAME বৈশিষ্ট্য রয়েছে তা নিশ্চিত করুন। একটি আইডি বৈশিষ্ট্য যথেষ্ট নয়! আইডি বৈশিষ্ট্যগুলি ডিওএম-এ ব্যবহারের জন্য, পোষ্ট পে-লোডের জন্য নয়।

  9. নিশ্চিত করুন যে আপনি <input type="file">জমা দেওয়ার ক্ষেত্রে আপনার ক্ষেত্রটি অক্ষম করতে জাভাস্ক্রিপ্ট ব্যবহার করছেন না

  10. আপনি যেমন ফর্ম বাসা বাঁধছেন না তা নিশ্চিত করুন <form><form></form></form>

  11. আপনার এইচটিএমএল কাঠামোটি অবৈধ / ওভারল্যাপিং ট্যাগগুলির মতো পরীক্ষা করুন <div><form></div></form>

  12. এছাড়াও আপনি যে ফাইলটি আপলোড করছেন তার মধ্যে কোনও অ-অক্ষরীয় অক্ষর নেই তাও নিশ্চিত করুন।

  13. একবার, আমি হঠাৎ করে আমার সাথে কেন এমন হচ্ছিল তা জানার চেষ্টা করতে কয়েক ঘন্টা ব্যয় করেছি। দেখা গেল যে আমি কিছু পিএইচপি সেটিংসে কিছু পরিবর্তন করেছি .htaccessএবং এর মধ্যে একটি (এখনও নিশ্চিত নয়) আপলোড ব্যর্থ হওয়ার কারণ হতে পারে এবং $_FILESখালি থাকতে পারে।

  14. আপনি ট্যাগের অ্যাট্রিবিউটে আন্ডারস্কোর ( _) এড়িয়ে যাওয়ার চেষ্টা করতে পারেনname=""<input>

  15. এটি ফাইল-আকারের সমস্যা কিনা তা সঙ্কুচিত করতে খুব ছোট ফাইলগুলি আপলোড করার চেষ্টা করুন।

  16. আপনার উপলব্ধ ডিস্কের স্থানটি পরীক্ষা করুন। যদিও খুব বিরল, এটি এই পিএইচপি ম্যানুয়াল পৃষ্ঠা মন্তব্যে উল্লেখ করা হয়েছে :

    যদি আপনার ফর্মটি সঠিক বলে মনে হয় তবে হঠাৎ $ _FILES অ্যারেটি রহস্যজনকভাবে খালি হয়ে যায়, আপনার অস্থায়ী ফোল্ডার বিভাজনের জন্য উপলব্ধ ডিস্কের স্থানটি পরীক্ষা করা উচিত। আমার ইনস্টলেশনটিতে, সমস্ত ফাইল আপলোড সতর্কতা ছাড়াই ব্যর্থ হয়েছে। দাঁতে দাঁত কষানোর পরে, আমি অতিরিক্ত স্থান খালি করার চেষ্টা করেছি, যার পরে ফাইল আপলোডগুলি হঠাৎ আবার কাজ করে।

  17. নিশ্চিত হয়ে নিন যে আপনি কোনও সাধারণ পোষ্ট অনুরোধের পরিবর্তে একটি এজেक्स পোস্ট অনুরোধের মাধ্যমে ফর্মটি জমা দিচ্ছেন না যা কোনও পৃষ্ঠা পুনরায় লোড করার কারণ ঘটায়। আমি উপরের তালিকার প্রতিটি পয়েন্ট দিয়ে গিয়েছি এবং শেষ পর্যন্ত জানতে পারলাম যে কারণে আমার $ _FILES ভেরিয়েবলটি খালি ছিল তা হ'ল আমি একটি এজাক্স পোস্ট অনুরোধটি ব্যবহার করে ফর্মটি জমা দিচ্ছিলাম। আমি জানি যে এজ্যাক্স ব্যবহার করেও ফাইল আপলোড করার বিভিন্ন পদ্ধতি রয়েছে তবে এটি আপনার $ _FILES অ্যারেটি খালি থাকার কারণ হতে পারে valid

এই পয়েন্টগুলির জন্য কয়েকটি উত্স:
http://getluky.net/2004/10/04/apachephp-_files-array-mysteriously-empty/


12
সম্ভবত "গৃহীত" উত্তরটি মূল পোস্টটি সমাধান করেছে তবে এই উত্তরটিই আমি সবচেয়ে সহায়ক বলে মনে করেছি। সন্দেহ হলে ব্রাউজারটি দেখে উত্সটি দেখুন। এই তালিকার প্রতিটি আইটেম চেক করা এবং পিছনে ট্রেস করা, আমি আমার ত্রুটিটি একটি সবচেয়ে অপ্রত্যাশিত জায়গায় পেয়েছি। আপনি যদি একই ধরণের সমস্যার সাথে লড়াই করে থাকেন তবে বিশ্বাস করুন, এটি সম্ভবত অ্যাপাচে কোনও বাগ নয়। ;)
ক্লিথথিম

3
এছাড়াও নিশ্চিত হয়ে নিন যে আপনার ফর্ম উপাদানটি ইনপুট যুক্ত অন্য ফর্ম উপাদানগুলির শিশু নয়। যেমন<form><form><input type="file"></form></form>
sudee

3
কি দারুন! এই তালিকার জন্য আপনাকে ধন্যবাদ। আমার সমস্যা ছিল # 2। আমি $('#my-form')[0].reset();সাবমিট হ্যান্ডেলারে কল করছিলাম ।
গ্যাভিন

2
ধন্যবাদ। আমার ক্ষেত্রে 7 নম্বর। enctype = "বহুগুণ / ফর্ম-ডেটা" অপরাধী ছিল।
Thupten

3
DUDE, আপনি একটি জীবন রক্ষাকারী। আমি এটি সনাক্ত করার চেষ্টা করতে ঘন্টা ব্যয় করেছি (2) আমার সমস্যা ছিল ... ধন্যবাদ!
মাইক কিউ

74

এইচটিএমএল হিসাবে আপনি যে অংশটি সঠিকভাবে সেট আপ করেছেন বলে মনে হচ্ছে। আপনার কাছে ইতিমধ্যে enctype="multipart/form-data"যা ফর্মটিতে থাকা খুব গুরুত্বপূর্ণ।

আপনার php.iniসেটআপ হিসাবে , কখনও কখনও সিস্টেমে একাধিক php.iniফাইল উপস্থিত থাকে। আপনি সঠিকটিকে সম্পাদনা করছেন তা নিশ্চিত হন। আমি জানি যে আপনি বলেছিলেন যে আপনি php.iniফাইল আপলোড করতে আপনার ফাইলটি কনফিগার করেছেন তবে আপনি কী আপলোড করার চেষ্টা করছেন সেটির চেয়ে নিজের upload_max_filesizeএবং আরও post_max_sizeবড় হতে সেট করেছেন ? সুতরাং আপনার উচিত:

file_uploads = On; sounds like you already did this
post_max_size = 8M; change this higher if needed
upload_max_filesize = 8M; change this higher if needed

আপনার ডিরেক্টরিতে: "c:\wamp\tmp"উভয়ই পড়ার এবং লেখার অনুমতি আছে? আপনি php.iniপরিবর্তনগুলি করার পরে অ্যাপাচি পুনরায় চালু করার কথা মনে আছে ?



4
+1: অ্যাপাচি সার্ভার টিপ পুনরায় চালু করার জন্য। অনেক উইন্ডোজ ব্যবহারকারী তা ভুলে যান।
শিমিটটোমার

36

enctype="multipart/form-data"উদাহরণস্বরূপ, আপনার ফর্মটি যুক্ত করা গুরুত্বপূর্ণ

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

14

বিভিন্ন বিবিধ জবাবের জন্য সবাইকে ধন্যবাদ। এগুলি সবাই খুব সহায়ক। উত্তরটি খুব বিজোড় কিছু হতে পারে। দেখা যাচ্ছে যে পিএইচপি 5.2.11 নিম্নলিখিতগুলি পছন্দ করে না:

post_max_size = 2G

অথবা

post_max_size = 2048M

যদি আমি এটিতে পরিবর্তন করি 2047Mতবে আপলোডটি কাজ করে।


17
মনে রাখবেন যে এই জাতীয় উচ্চমানের স্থান / ডিডোসের আক্রমণ থেকে দূরে থাকা an আপনার সমাধানটি অনুলিপি করে আটকানোর চেষ্টা করার সময় লোকেরা এটিকে খুব বেশি সচেতন করে তোলে। যাইহোক, 2 টি জিগের জন্য একটি আপলোড সময় প্রয়োজন যা বেশ দীর্ঘ।
ম্যানুয়েল আর্কড শ্মিট

আর বেশি বড় নয়। আমাদের ক্লায়েন্ট রয়েছে যারা খুব নিয়মিত 1-3G রেঞ্জে ফাইল আপলোড করেন। যেহেতু তারা তাদের নিজস্ব সার্ভারে ফাইলগুলি আপলোড করছে এবং তারা আইপি শ্বেত তালিকাভুক্ত সার্ভার, তাই এক্সচেঞ্জটি বেশ সাধারণ এবং নিছক একটি উপায় যা কোনও ক্লায়েন্টকে তাদের সরঞ্জামগুলি যেভাবে তারা ব্যবহার করতে চান সেভাবে ব্যবহার করতে দেয়। তারা বিলগুলি প্রদান করে, কোনও নিরাপত্তা ঝুঁকিতে জড়িত না, কোনও সমস্যা নেই।
TheSatinKnight

8

আমার 2 ঘন্টা দেখতে একই সমস্যা রয়েছে, আমরা আমাদের সার্ভারের কনফিগারেশনটি প্রথমে পরীক্ষা করে দেখতে খুব সহজ।

উদাহরণ:

echo $upload_max_size = ini_get('upload_max_filesize');  
echo $post_max_size=ini_get('post_max_size');   

ফাইল আকারের যে কোনও ধরণের :20mb, কিন্তু আমাদের upload_max_sizeউপরে 20mbকিন্তু অ্যারে হয় null। উত্তর আমাদের post_max_sizeচেয়ে বড় হওয়া উচিত upload_max_filesize

post_max_size = 750M  
upload_max_filesize = 750M

6

আমি এখানে আরও একটি কারণ পেয়েছি: JQuery মোবাইল ব্যবহার করার সময় এবং ফর্মটি অ্যাট্রিবিউট ডেটা-এজ্যাক্স সত্য হিসাবে সেট করা থাকলে, ফাইলগুলি অ্যারেটি খালি থাকবে। সুতরাং ডেটা-এজ্যাক্সকে মিথ্যা হিসাবে সেট করুন।


5

আপনার ইনপুট উপাদানটির একটি 'নাম' বৈশিষ্ট্য রয়েছে তা নিশ্চিত করুন। <input type="file" name="uploadedfile" />

এটি অনুপস্থিত থাকলে $ _ ফাইলগুলি খালি থাকবে।


4

আমি একই সমস্যার সাথে লড়াই করে যাচ্ছিলাম এবং সমস্ত কিছু পরীক্ষা করছিলাম, ত্রুটি প্রতিবেদন পাচ্ছিলাম না এবং কিছুই ভুল বলে মনে হচ্ছে না। আমার ত্রুটি_বন্দরের (E_ALL) সমস্যা ছিল তবে হঠাৎ বুঝতে পারলাম যে আমি আপাচে লগ এবং ভয়েলি পরীক্ষা করে নি! স্ক্রিপ্টটিতে একটি সিনট্যাক্স ত্রুটি ছিল ...! (একটি অনুপস্থিত "}" )

সুতরাং, এটি যাচাই করার মতো স্পষ্ট কিছু হলেও এটি ভুলে যেতে পারে ... আমার ক্ষেত্রে (লিনাক্স) এটি এখানে:

/var/log/apache2/error.log

3

এটির কথা কেউ উল্লেখ করেনি তবে এটি আমাকে সাহায্য করেছে এবং নেটের অনেক জায়গাতেই এটি উল্লেখ করা হয়নি।

আপনার php.ini নিম্নলিখিত কীটি সেট করেছে তা নিশ্চিত করুন:

    upload_tmp_dir="/path/to/some/tmp/folder"

তারা যদি আপনাকে কোনও পরম সার্ভার ফাইল পাথ ব্যবহার করতে চায় তবে আপনার ওয়েব হোস্টের সাথে আপনাকে পরীক্ষা করতে হবে। এটি নির্ধারণ করার জন্য আপনার php.ini ফাইলের অন্যান্য ডিরেক্টরি উদাহরণগুলি দেখতে পারা উচিত। এটি সেট করার সাথে সাথে আমি আমার _ ফাইলেস অবজেক্টে মান পেয়েছি।

অবশেষে নিশ্চিত হয়ে নিন যে আপনার টিএমপি ফোল্ডার এবং যেখানেই আপনি ফাইলগুলিকে সঠিক অনুমতি নিতে সরিয়ে নিয়ে যাচ্ছেন যাতে সেগুলি পড়তে এবং লিখতে পারে।


2

আপনি ফাইল একটি অ্যারের আপলোড করার চেষ্টা করছেন তাহলে বৃদ্ধি করার প্রয়োজন হতে পারে max_file_uploadsমধ্যে php.iniযা ডিফল্ট সেট করে20

দ্রষ্টব্য : max_file_uploadsphp.ini এর বাইরে পরিবর্তন করা যাবে না। দেখুন পিএইচপি "বাগ" # 50684


2

আরেকটি সম্ভাব্য অপরাধী হ'ল অ্যাপাচি পুনঃনির্দেশ। আমার ক্ষেত্রে আমার সাইটটিতে নির্দিষ্ট পৃষ্ঠাগুলি HTTP সংস্করণগুলিতে এবং অন্য পৃষ্ঠাগুলি পৃষ্ঠাগুলির https সংস্করণগুলিতে পুনঃনির্দেশ করার জন্য আমার অ্যাপাচি এর httpd.conf সেটআপ ছিল, যদি সেগুলি ইতিমধ্যে না থাকে। আমার যে পৃষ্ঠায় একটি ফাইল ইনপুট সহ একটি ফর্ম ছিল সেটি এসএসএলকে বলপূর্বক কনফিগার করা পৃষ্ঠাগুলির মধ্যে একটি ছিল, তবে ফর্মটির ক্রিয়া হিসাবে মনোনীত পৃষ্ঠাটি http হিসাবে কনফিগার করা হয়েছিল। সুতরাং পৃষ্ঠাটি অ্যাকশন পৃষ্ঠার এসএসএল সংস্করণে আপলোড জমা দেবে, তবে অ্যাপাচি এটি পৃষ্ঠাটির http সংস্করণে পুনর্নির্দেশ করছিল এবং আপলোড করা ফাইল সহ পোস্টের ডেটা নষ্ট হয়ে গেল।


2

সক্ষম_পষ্ট_ডাটা_ড্রেডিং = চালু করার জন্য আপনার php.ini পরীক্ষা করুন , কারণ:

এই বিকল্পটি অক্ষম করার ফলে $ _POST এবং $ _FILES জনবসতিপূর্ণ হবে না । পোস্টডেটা পড়ার একমাত্র উপায়টি হবে পিএইচপি: // ইনপুট স্ট্রিম র‌্যাপারের মাধ্যমে। (...)

ইন http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading


1

আপনার প্রধান স্ক্রিপ্টটি যদি http://Some_long_URL/index.phpক্ষেত্রের সম্পূর্ণ ইউআরএল (স্পষ্টত index.phpএবং কেবল নয়http://Some_long_URL ) সুনির্দিষ্ট করে তোলার actionক্ষেত্রে সচেতন থাকে। আশ্চর্যজনকভাবে, যদি তা না হয় তবে সঠিক স্ক্রিপ্টটি কার্যকর করা হয় তবে খালি empty _ ফাইলগুলি দিয়ে!


1

আমি একই ইস্যুতে দৌড়ে এসেছি এবং এটি আমার আইডিই হ'ল সমস্যাটির অংশ ছিল। আমি সরাসরি ব্রাউজারটি সরাসরি ব্যবহার না করে আইডিই (পিএইচপিএসটারম) থেকে সরাসরি ডিবাগারটি চালু করছিলাম। আইডিই স্প্যানড ইউআরএলটি এইরকম ছিল:

"...localhost:63342/CB_Upload/index.php?_ijt=j2hcbacqepj87bvg66ncuohvne"

এবং কেবল ব্যবহার করে:

"...localhost/CB_Upload/index.php"

ঠিক কাজ করেছে। আমার সেটআপটি হ'ল পিসি / উইন্ডোজ 10 / ডাব্লুএমএভারভার 3.0.6 64 বিট


এখানেও একই জিনিস, আমি এ পর্যন্ত এক ঘন্টার জন্য চেনাশোনাগুলিতে ছুটছিলাম! ধন্যবাদ
একনাদিলি

1

আপনি sys_get_temp_dirযদি ভাগ করা হোস্টিংয়ের পরিবেশে থাকেন তবে প্রদত্ত টেম্প ফোল্ডারের অবস্থানটিতে বিশ্বাস করবেন না ।

এখানে আরও একটি জিনিস যা এখনও উল্লেখ করা হয়নি ...

আমি ধরে নিয়েছিলাম, স্বাভাবিকভাবেই, আমার পিএইচপি স্ক্রিপ্ট অস্থায়ী ফাইল আপলোডগুলি যে ফোল্ডারে জমা হয়েছিল /tmp। এই বিশ্বাসটি echo sys_get_temp_dir() . PHP_EOL;ফিরে আসার বিষয়টি দ্বারা আরও দৃ .় হয়েছিল /tmp। এছাড়াও,echo ini_get('upload_tmp_dir'); কিছুই দেয় না।

আপলোড করা ফাইলটি আসলে আমার /tmpফোল্ডারে সংক্ষেপে উপস্থিত হয়েছে তা যাচাই করতে , আমি sleep(30);আমার স্ক্রিপ্টে একটি বিবৃতি যুক্ত করেছি ( এখানে প্রস্তাবিত হিসাবে ) এবং আমার নেভিগেট করা হয়েছে/tmp ফাইলটি সনাক্ত করতে সিপ্যানেল ফাইল ম্যানেজারে ফোল্ডারে । তবে যাই হোক না কেন, আপলোড করা ফাইলটি কোথাও পাওয়া যায়নি।

আমি এর কারণ নির্ধারণের জন্য কয়েক ঘন্টা সময় ব্যয় করেছি এবং এখানে দেওয়া প্রতিটি পরামর্শ কার্যকর করেছি।

শেষ অবধি, ক্যোয়ারীর জন্য আমার ওয়েবসাইট ফাইলগুলি অনুসন্ধান করার পরে tmp, আমি আবিষ্কার করেছি যে আমার সাইটে tmpবিভিন্ন ডিরেক্টরিতে নামযুক্ত অন্যান্য ফোল্ডার রয়েছে । আমি বুঝতে পেরেছিলাম যে আমার পিএইচপি স্ক্রিপ্টটি আসলে আপলোড করা ফাইলগুলিতে লিখছিল .cagefs/tmp( "লুকানো ফাইলগুলি দেখান" এই ফোল্ডারটি দেখতে অবশ্যই সেটিংসটি সিপ্যানেলে সক্ষম করতে হবে))

সুতরাং, কেন sys_get_temp_dirফাংশনটি সঠিক তথ্য ফেরত দেয় ?

এখানে পিএইচপি.net ওয়েবপৃষ্ঠা থেকে অর্থ sys_get_temp_dir(যেমন শীর্ষ মন্তব্য):

যদি লিনাক্স সিস্টেমে চালিত হয় যেখানে সিস্টেমেডে প্রাইভেটটিম্প = সত্য রয়েছে (যা সেন্টোস 7 এ সম্ভবত ডিফল্ট এবং অন্যান্য নতুন ডিস্ট্রোস রয়েছে), এই ফাংশনটি কেবল "/ tmp" ফিরে আসবে, সত্য নয়, কিছুটা গতিশীল পথ হবে।

এই এসও পোস্টটি ইস্যুটিতেও বিতর্ক করে:


0

আমি একই সমস্যা পেয়েছি এবং থিমের কোনওটিই আমার ত্রুটি ছিল না। আপনার "htaccess" ফাইলটি পরীক্ষা করে দেখুন, যদি আপনি একটি পেয়ে থাকেন, "মাল্টিভিউস" সক্ষম হয়ে থাকে তবে। আমি তাদের অক্ষম করতে হয়েছিল।


0

আমার একই রকম সমস্যা ছিল এবং শিমিটটোমার যেমন উল্লেখ করেছে তেমন সমস্যাটি এইচটিসেসিতে ভুল মূল্যতে ছিল।

পরিবর্তন php_value post_max_size 10MBকরুনphp_value post_max_size 10M


0

আমি খালি ছিলাম $_FILESকারণ <form enctype="multipart/form-data" method="post">আমি রাখার পরে

</div>
<div style="clear:both"></div>

প্রাথমিক কোড মত ছিল

<span class="span_left">Photos (gif/jpg/jpeg/png) </span>
<form enctype="multipart/form-data" method="post">
<input name="files[]" type="file" id="upload_file" />
<input type="button" id="upload" value="Upload photo" />
</form>

আমি সংশোধন করার সিদ্ধান্ত নিয়েছি এবং

<div>
<span class="span_left">Photos (gif/jpg/jpeg/png) </span>
<form enctype="multipart/form-data" method="post">
</div>
<div style="clear:both"></div>
<input name="files[]" type="file" id="upload_file" />
<input type="button" id="upload" value="Upload photo" />
</form>
<div style="clear:both"></div>

সুতরাং উপসংহারটি হ'ল পরে <form enctype="multipart/form-data" method="post">অবশ্যই হওয়া <input name, type, idউচিত এবং <div>কিছু অন্যান্য ট্যাগও হওয়া উচিত

আমার পরিস্থিতিতে সঠিক কোড ছিল

<div>
<span class="span_left">Photos (gif/jpg/jpeg/png) </span>
</div>
<div style="clear:both"></div>
<form enctype="multipart/form-data" method="post">
<input name="files[]" type="file" id="upload_file" />
<input type="button" id="upload" value="Upload photo" />
</form>
<div style="clear:both"></div>

0

আমারও ফাঁকা F _FILES নিয়ে সমস্যা হয়েছিল। উপরের চেক-লিস্টে .htaccess, httpd.conf বা httpd-vhost.conf- এ মাল্টিভিউয়ের উল্লেখ নেই।

আপনার যদি ওয়েবসাইটটি অন্তর্ভুক্ত আপনার ডিরেক্টরিতে বিকল্পের নির্দেশিকায় মাল্টিভিউস সেট থাকে তবে uploaded _FILES খালি থাকবে, যদিও আমি আপলোড করা ফাইলটি দেখিয়েছি যদি সামগ্রী-দৈর্ঘ্যের শিরোনাম।


0

আপনি যদি জিকুয়েরি মোবাইল ব্যবহার করেন

ফাইল ইনপুট সহ একটি মাল্টিপার্ট ফর্ম ব্যবহার করা অ্যাজাক্স দ্বারা সমর্থিত নয়। এই ক্ষেত্রে সার্ভারে ফর্মটি সঠিকভাবে জমা দেওয়া হয়েছে তা নিশ্চিত করার জন্য আপনাকে ডেটা-অজ্যাক্স = "মিথ্যা" দিয়ে প্যারেন্ট ফর্মটি সাজাতে হবে।

<form action="upload.php" method="post" enctype="multipart/form-data"  data-ajax="false">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

0

আপনার ফর্ম ফর্মটি যে পৃষ্ঠায় ফর্ম এবং পিএইচপি কোড রয়েছে এমন একটি সাধারণ পিএইচপি পৃষ্ঠায় আপনি পুনরায় ব্যবহার করুন এবং এটির মতো পরীক্ষা করুন।

যে কোনও বুটস্ট্র্যাপ বা জাভা স্ক্রিপ্ট _FILES [] কে পরিষ্কার করতে পারে। এটা আমার কেস ছিল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.