I'm able to upload any image with this code but when I try to upload gif I get an error.
Here is how I trying and the error that I get is Error 2: ERROR upload file
. This is on the second IF block. What can be wrong here?
define('MAX_FILE_SIZE', 20000000000);
$permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif');
if (isset($_POST['upload'])) {
$caption = $_POST['caption'];
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$category = $_POST['gif_cat'];
$ext = substr(strrchr($fileName, "."), 1);
// generate the random file name
$randName = md5(rand() * time());
// gif name with extension
$myFile = $randName . '.' . $ext;
// save gif path
$path = "../upload/gifs/" . $myFile;
if (in_array($fileType, $permitted) && $fileSize > 0
&& $fileSize <= MAX_FILE_SIZE) {
$result = move_uploaded_file($tmpName, $path);
if (!$result) {
echo "Error uploading gif file";
exit;
} else {
$db = new mysqli("localhost", "user", "pass", "table");
if (mysqli_connect_errno()) {
printf("Connect failed: %s<br/>", mysqli_connect_error());
}
mysqli_set_charset($db, "UTF8");
$query = "INSERT INTO gifs (caption, name, size, type, file_path, gif_cat) VALUES (?,?,?,?,?,?)";
$conn = $db->prepare($query);
if ($conn == TRUE) {
$conn->bind_param("ssisss",$caption, $myFile, $fileSize, $fileType, $path, $category);
if (!$conn->execute()) {
echo 'error insert';
} else {
echo "Gif {$_FILES['userfile']['name']} was successfully uploaded<br />
<a href='index.php'>Add another gif</a><br />";
exit;
}
} else {
die("Error 1: ERROR preparing Statement");
}
}
} else {
echo 'Error 2: ERROR upload file';
}
} else {
echo 'Error 3';
}
var_dump($_FILES)
array (size=1)
'userfile' =>
array (size=5)
'name' => string 'azbRWYK_460sa.gif' (length=17)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 1
'size' => int 0
UPDATE:
This is happen with .gifs bigger than 1MB .. I was able to upload < 1MB gif.
UPDATE 2: That strange. On phpinfo() result is
max_file_uploads 20 20
post_max_size 8M 8M
upload_max_filesize 2M 2M
but in my php.ini I have
upload_max_filesize = 20M
post_max_size = 20M
max_file_uploads - I don't have this in php.ini?!
How I have this differences? And where to find this second php.ini?
UPDATE 3:
Ok, I found another php.ini in apache folder and after I change values now is work. I never thought of second php.ini file.