【问题标题】:Error in Uploading file using php. No php error displayed使用 php.ini 上传文件时出错。没有显示 php 错误
【发布时间】:2018-04-06 20:27:49
【问题描述】:

PHP 代码:

if(isset($_POST["btn-vd-submit"]) AND $vd_perm_actual > 0) {
$filename = $_FILES['vdfile']['name'];
$target_dir = "./voice-demo-files/";
$target_file = $target_dir . basename($_FILES['vdfile']['name']);
$uploadOk = 1;
$vdFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES['vdfile']['size'] > 50000000000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($vdFileType != "mp3") {
    echo "Sorry, only mp3 files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES['vdfile']['tmp_name'], $target_file)) {
        echo "The file ". basename( $_FILES['vdfile']['name']). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

HTML 表单:

<form class="custom-form" method="post" enctype="multipart/form-data">
    <div class="s-4 m-4 center">
        <center>Choose A Voice Demo File (.mp3) to upload and link with your profile:<br><br><br>
        <input type="file" name="vdfile" id="vdfile"><br><br><br>
    </div>
    <div class="s-4 m-4 center">
        <button class="submit-form center button background-primary text-white" name="btn-vd-submit" type="submit">Upload This Voice Demo!</button>
    </div>

当我选择并上传文件时,我收到了我设置的自定义错误消息“抱歉,上传您的文件时出错。”; 我没有在页面或日志中显示任何类型的 php 错误,但是当我检查目录时,文件没有上传。

【问题讨论】:

  • 你需要在你的表单标签中调用你的页面php&lt;form action="upload.php" ...&gt;
  • 检查目标目录的权限。假设您正在运行 Apache,则该目录应该可由运行 Apache 进程的用户写入。如果一切都失败了,请将目标目录设置为通用可写。

标签: php html forms file-upload upload


【解决方案1】:

尝试以下测试:

  1. 上传一个 1kb 的文件。如果那行得通,则意味着您遇到了最大文件限制错误。 (阅读here如何修复它)
  2. 如果您在尝试上传 1kb 的过程中尝试将文件上传到其他目录(可能是当前目录) - 成功意味着您可以根据权限将文件写入目录。阅读 here 关于修复权限问题

除此之外,尝试在您的代码中添加以下行,它将帮助我们进行调试过程:

error_reporting(E_ALL);

【讨论】:

  • 太好了,谢谢!确实是文件大小限制。但是语法有什么问题吗?但是如果我注释掉检查文件大小部分,如果我上传任何其他不是测试 1kb 文件的 mp3 文件,它仍然会出错。
  • 您可以在此处找到有关如何使用 php 上传文件的完整示例:w3schools.com/php/php_file_upload.asp
  • 如果您询问如何删除文件限制 - 请查看我的答案中的链接。
  • 即使我删除了 php 代码的文件限制部分,文件也不会上传,这一次我什至没有收到错误消息。我正在使用类似于 w3schools one 的代码。现在只是没有任何大小限制
  • 尝试将此行添加到您的 php 代码的顶部,然后尝试重新上传,msg what msgs accure:: error_reporting(E_ALL);
猜你喜欢
  • 2013-04-03
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
相关资源
最近更新 更多