【问题标题】:No input file specified - php未指定输入文件 - php
【发布时间】:2014-12-12 02:05:15
【问题描述】:

我对 php 很陌生,但以前经常使用 javascript 和 html。我在自己的计算机上托管了一个带有 apache 的服务器,只是为了测试 php。我在上面安装了 php 作为 cgi,一切正常。我用 php 做了一些测试,只是为了了解它是如何工作的,但是当我尝试制作文件上传表单并用 php 读取文件时:

//uploadFile.php
<html>
    <head>
    </head>
    <body>
        <form action="uploadFile.php" id="form" method="POST" enctype="multipart/form-data">
            <input type="file" name="uploadFile">
            <input name="submit" value="upload" type="submit">
        </form>

        <?php
            echo $_FILES["uploadFile"]["name"];
        ?>
    </body>

</html>

突然收到消息:

没有指定输入文件

仅此而已!它甚至没有说这是一个错误。我尝试了这个非常简单的 php 脚本,它以前有效:

<?php
echo "Working";
?>

但我仍然收到“未指定输入文件”。我尝试的每个 php 文件都会给我这个错误,这表明问题不在我的代码中。当我尝试没有 php 的普通 .html 文件时,它起作用了。我已经尝试对其进行研究,它看起来像是在 godaddy 上托管的 peaple 收到了此消息,但我没有找到适合我的解决方案。

有没有人知道解决方案或有任何关于如何解决这个问题的提示。

【问题讨论】:

  • 我喜欢人们在给出答案后更改代码。
  • 那只是因为我认为我已经足够清楚了,并且您会理解我的问题,但您没有,所以我改变以澄清事情

标签: php apache


【解决方案1】:

根据您在提交此答案后更改问题的originally posted code/question:

当涉及到 POST/FILES 变量或与此相关的任何变量时,PHP 区分大小写。

你有name="uploadfile",然后是$_FILES["uploadFile"]

改成$_FILES["uploadfile"]

F 与f 不同。

或者保留$_FILES["uploadFile"]并将name="uploadfile"更改为name="uploadFile"。

不管怎样,它们在字母大小写上都非常匹配。


阅读上传文件的手册:


编辑:(示例)

旁注:

确保该文件夹存在并具有适当的写入权限。您可能需要调整 $uploads_dir = 'uploads'; 的方式,具体取决于您执行代码的位置。

<html>
    <head>
    </head>
    <body>
        <form action="" id="form" method="POST" enctype="multipart/form-data">
            <input type="file" name="uploadFile">
            <input name="submit" value="upload" type="submit">
        </form>

<?php
if(isset($_POST['submit'])){

$uploads_dir = 'uploads';
foreach ($_FILES["uploadFile"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["uploadFile"]["tmp_name"][$key];
        $name = $_FILES["uploadFile"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
  }

}

?>
    </body>

</html>

“当我尝试一个没有 php 的普通 .html 文件时,它起作用了。”

确保我的答案中的代码用作.php 文件而不是.html。

您还应该就此事联系 GoDaddy 的技术支持,并查看 PHP 是否确实可供您使用。


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

error_reporting(E_ALL);
ini_set('display_errors', 1);

旁注:错误报告只能在暂存阶段完成,而不能在生产阶段完成。

【讨论】:

  • 但是对于每个 php 文件,我仍然收到相同的消息
  • 由于您使用的是同一文件中的所有代码,因此请在 echo $_FILES["uploadFile"]["name"]; 周围使用 isset(),如 if(isset($_POST['submit'])){ echo $_FILES["uploadFile"]["name"]; } @Istlemin 中一样
  • @Istlemin 重新加载我的答案,我做了一个示例编辑。确保该文件夹存在并且具有适当的写入权限。您可能需要调整 $uploads_dir = 'uploads'; 的方式,具体取决于您执行代码的位置。
  • @Istlemin 还要确保我的答案中的代码用作.php 文件而不是.html
  • 正如我刚刚添加到我的问题中,每个 php 文件都会给我这个错误,无论我输入什么!感觉就像您认为问题出在我的文件上传代码中。抱歉,如果我的问题不清楚
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 2015-02-12
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多