Warning: File upload error - unable to create a temporary file in Unknown on line 0

匿名 (未验证) 提交于 2019-12-03 01:01:02

问题:

Am getting the following error everytime I try to upload a file .

"Warning: File upload error - unable to create a temporary file in Unknown on line 0"

Here is my HTML form,

<form action="./inventory_list.php" enctype="multipart/form-data" name="myForm" id="myForm" method="post"> <table width="625" border="1" cellpadding="5">   <tr>     <td width="84">Product Name</td>     <td width="399"><input type="text" name="product_name" id="product_name"></td>   </tr>   <tr>     <td>Product Price</td>     <td><label for="textfield2">Rs:</label>       <input type="text" name="price" id="price"></td>   </tr>   <tr>     <td>Category</td>     <td><select name="category" id="category">         <option value="" selected="selected"></option>         <option value="Bedroom ">Bedroom </option>         <option value="Living">Living room</option>         <option value="Dining">Dining</option>       </select></td>   </tr>   <tr>     <td>Sub - Category</td>     <td><select name="subcategory" id="subcategory">         <option value="" selected="selected"></option>         <option value="dinet">Dining tables</option>         <option value="shoe">shoe racks</option>         <option value="wardrobe">wardrobes</option>         <option value="sofa">sofa</option>       </select></td>   </tr>   <tr>     <td>Product Details</td>     <td><textarea name="details" cols="50" rows="10" id="details"></textarea></td>   </tr>   <tr>     <td>Product Image</td>     <td><label>         <input type="file" name="fileField" id="fileField"/>       </label></td>   </tr>   <tr>     <td>&nbsp;</td>     <td><input type="submit" name="button" id="button" value="Add this Item now"></td>   </tr> </table> </br> </form> 

Here is my PHP code ,

if(isset($_POST["product_name"])) {     $product_name = mysql_real_escape_string($_POST["product_name"]);     $price= mysql_real_escape_string($_POST["price"]);     $category= mysql_real_escape_string($_POST["category"]);     $subcategory= mysql_real_escape_string($_POST["subcategory"]);     $details= mysql_real_escape_string($_POST["details"]);      //see if duplicate product exists     $sql = mysql_query("select id from products where product_name='$product_name' limit 1");     $product_match = mysql_num_rows($sql);   //count the output      if($product_match>0)     {         echo "The product name already exists";         exit();     }     $sql= mysql_query("INSERT INTO `mystore`.`products` (`product_name`, `price`, `details`, `category`, `subcategory`, `date_added`) VALUES ( '$product_name', '$price', '$details', '$category', '$subcategory', now());")or die(mysql_error());     $pid = mysql_insert_id();     $newname = "$pid.jpg";      move_uploaded_file($_FILES['fileField']['tmp_name'],'../inventory_images/$newname'); } 

Am trying to upload on localhost , Test Server:XAMPP , OS : MAC 10.8

Am stuck on this from a long time , I tried a lot of things but nothing is working .

回答1:

In a terminal type :

chmod -R 777 /your/upload/folder

you can know the folder where your php uploads files by executing this code :

$tmp_dir = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir(); die($tmp_dir); 

In my case I get /var/... so when I sett 777 permission I get no error.

Edit

Setting 777 to /var is dangerous so you have to set it only to the folder where php uploads the file (which you can get buy the code above).



回答2:

You should check your php.ini and look for the 'upload_tmp_dir' option. It is empty by default. After that, check the permission of your tmp dir. If you want to know what upload_tmp_dir your server is using, you can simply use this snippet of code

$tmp_dir = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir(); die($tmp_dir); 

Finally in a terminal shell you can type : chmod -R 777 'your_tmp_upload_dir'



回答3:

Possibly it is /tmp directory problem. Check that /tmp has correct access privileges and enough space size.



回答4:

I was getting the same error when uploading files from WordPress. I got this error in the apache error log file:

"PHP Warning: File upload error - unable to create a temporary file in Unknown".

I fixed the error by commenting out upload_tmp_dir in /etc/php.ini. The upload_tmp_dir was set to /tmp. I also set the date.timezone. After rebooting the server I was able to upload media files from WordPress.

It seems php did not have permissions to write to the /tmp folder.



回答5:

If you don't know what it is, it is SeLinux

chcon -R -h -t httpd_sys_script_rw_t /usr/share/nginx/tmp chown -R nginx:nginx /usr/share/nginx/tmp chmod -R ug+rw /usr/share/nginx/tmp 

tmp dir, upload dir in chroot need be set to /tmp not full path



回答6:

Change permissions of the 'upload' directory. You'll need to give the web server access to it before it can move files into it..

Change your upload folder permission "Read only" to "Read & Write"

**Edited** 

Read this link and also read this links. Its guide you how to change file permission.



回答7:

You don't say what your platform is, but if it's a later version of Fedora (17+), the setting of PrivateTmp=true in the service file can cause this issue. Creating a service file in /etc with PrivateTmp=false is at least one way to fix that, although it involves rolling back a security feature.



回答8:

In my case it was caused by running httpd.exe Apache server from console instead of service.



回答9:

use double quotes in ../inventory_images/$newname.

change this line

move_uploaded_file($_FILES['fileField']['tmp_name'],'../inventory_images/$newname'); 

AS

move_uploaded_file($_FILES['fileField']['tmp_name'],'../inventory_images/'.$newname); 

NOTE:

in php with single quotes $newname will be display as string.

for displaying value of a variable use double quotes



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!