Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载GIF时出错_Php_Mysql_Upload - Fatal编程技术网

Php 上载GIF时出错

Php 上载GIF时出错,php,mysql,upload,Php,Mysql,Upload,我可以上传任何带有此代码的图像,但当我尝试上传gif时,我得到了一个错误。 下面是我如何尝试的,我得到的错误是错误2:错误上传文件。这是在第二个IF块上。这里有什么问题 define('MAX_FILE_SIZE', 20000000000); $permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif'); if (isset($_POST['upload'])) { $caption = $_POST['ca

我可以上传任何带有此代码的图像,但当我尝试上传gif时,我得到了一个错误。 下面是我如何尝试的,我得到的错误是
错误2:错误上传文件
。这是在第二个IF块上。这里有什么问题

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';
}
更新:


这是发生在大于1MB的.gif上的。。我能够上传<1MB gif

更新2: 真奇怪。在phpinfo()上,结果为

max_file_uploads    20  20
post_max_size   8M  8M
upload_max_filesize 2M  2M
但是在我的php.ini中

upload_max_filesize = 20M
post_max_size = 20M
max_file_uploads - I don't have this in php.ini?!
我怎么会有这种差异?在哪里可以找到第二个php.ini

更新3:


好的,我在apache文件夹中找到了另一个php.ini,在我更改值之后,现在就可以工作了。我从来没有想到第二个php.ini文件。

实际上,如果语句失败,您的
部分将转到
错误2:错误上载文件

  if (in_array($fileType, $permitted) && $fileSize > 0
        && $fileSize <= MAX_FILE_SIZE) {
if(在数组中($fileType,$allowed)&&$fileSize>0

&&$fileSize检查您的php.ini文件和
phpinfo()
将返回什么以及它们是否相等。检查您是否有多个php.ini文件


我以前也遇到过同样的问题,结果证明这就是原因。

打印$\u文件['userfile']['type'],这可能是不允许的。gif大于1MB时会发生这种情况。我可以上载<1MB gif。我不知道为什么这部分失败,因为
$filetype
$allowed
是可以的。我编辑了我的问题并从var_dump添加了结果。请看
$filetype
只是一个空变量,这就是为什么您的代码是空的失败。此外,您不需要
var\u dump
我们通过代码已经知道的
$allowed
变量(它的内部内容)。您实际上也需要
var\u dump
$fileSize
var\u dump($fileSize)
返回0
int 0
0>0
条件仍然失败。最好是
var\u dump
您的
$\u文件
数组本身。用
var\u dump($\u文件)
更新了我的问题,但仍然不知道这是为什么
  if (in_array($fileType, $permitted) && $fileSize > 0
        && $fileSize <= MAX_FILE_SIZE) {