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

47,980

Solution 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).

Solution 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'

Solution 3

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.

Solution 4

If you don't know what it is, it is SeLinux. It is enabled as default in certain distributions like CentOS.

Check if you have SELinux running:

sestatus

In the case you have SELinux enabled, fix your permissions with the chcon command.

This is just an example for nginx:

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.

Solution 5

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

Share:
47,980
CleanX
Author by

CleanX

Updated on February 17, 2022

Comments

  • CleanX
    CleanX about 2 years

    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 .