$_FILES[ ][ ] 在 php 中不工作

$_FILES[ ][ ] isn't working in php

这是我制作的 PHP 文件,用于将 jpeg 图像上传到我的服务器。当我加载图像文件并单击 'submit' 按钮时,print_r($_FILES) 正在工作,但所有 $_FILES[][] 都不起作用并且页面显示 OMG empty!。结果页面和代码如下。这有什么理由吗?我的 PHP 版本是 5.5.14,浏览器是 Chrome,Firefox 和网络服务器是 AWS EC2。

结果

Array ( [file] => Array ( [name] => catcam.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpb4hf4d [error] => 0 [size] => 5427 ) ) OMG empty! 

代码

<?php
if (isset($_FILES)) {
    print_r($_FILES);

    echo $fileName = $_FILES[‘file'][‘name'];
    echo $fileTempName = $_FILES[‘file'][‘tmp_name'];
    echo $fileType = $_FILES[‘file'][‘type'];
    echo $fileSize = $_FILES[‘file'][‘size'];
    echo $fileError = $_FILES[‘file'][‘error'];

    if (isset($fileName)) {
        echo "set!";
    }
    if (empty($fileName)) {
        echo "OMG empty!";
    }
}
?>

<html>
    <body>
        <form action="again.php" method="POST" enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file" />
            <br />
            <input type="submit" value="Upload" />
        </form>

    </body>
</html>

您的(编辑过的)代码(仍然)包含弯引号 并且会破坏其功能。

将其更改为以下内容:

echo $fileName = $_FILES['file']['name'];
echo $fileTempName = $_FILES['file']['tmp_name'];
echo $fileType = $_FILES['file']['type'];
echo $fileSize = $_FILES['file']['size'];
echo $fileError = $_FILES['file']['error'];

如果您有权访问它们,这些应该会在您的日志中触发 500 错误。

错误报告会告诉你哪里出了问题。

error reporting 添加到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只应在试运行中进行,绝不能在生产中进行。