为了账号安全,请及时绑定邮箱和手机立即绑定

托管服务上的 php 文件上传错误

托管服务上的 php 文件上传错误

PHP
Helenr 2023-08-06 15:44:57
伙计们,我今天非常沮丧,因为我的 php 文件错误它没有将文件上传到我的文件夹,也没有错误消息实际上我正在创建一个聊天网站,所以我已经完成了它,但问题是在我的服务器中它无法工作。我的代码<script type="text/javascript"><?php$upload_dir = $_SERVER['DOCUMENT_ROOT'];if (isset($_GET['room']) && isset($_GET['room']) ) {    if (isset($_FILES['img'])) {        require 'db_connect.php';        $room = mysqli_real_escape_string($conn,$_GET['room']);        $room = htmlentities($room);        $name = mysqli_real_escape_string($conn,$_POST['hidden']);        $name = htmlentities($name);                $img = $_FILES['img'];          $imgName = $img['name'];        $imgAddr = $img['tmp_name'];        $imgErr = $img['error'];        $imgSize = $img['size'];          if ($imgErr == 0) {                if ($imgSize<=2000000) {                $fileExt = explode('.',$imgName);                $fileExt_check = end($fileExt);                $allowedExts = array('png','jpg','jpeg','gif');                    if (in_array($fileExt_check,$allowedExts)) {                    if(copy($imgAddr,$upload_dir.'/ImgsSended/'.$imgName)){                        date_default_timezone_set('Asia/Kolkata');                        $date = date("h:i A d F - Y");                                                $sql = "INSERT INTO `myMessages` ( `msg_type` , `msg`, `room`, `name`, `stime`) VALUES ('file','imgsSended/$imgName', '$room', '$name', '$date')";                        $res = mysqli_query($conn,$sql);                        if ($res) {                            echo '                                alert("Image Sended Successfully");                                location.href = "rooms.php?roomname='.$room.'";                            ';                        }                    }ImgsSend 是我要在其中上传图像的文件夹名称我在此页面中通过文件上传表单发送了一个发布请求
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您应该学习如何调试 PHP 代码。

正如您所说,您的copy()ormove_uploaded_file()条件始终为假,因此 else 条件生效。发生这种情况是因为如果文件无法移动,copy()则 或返回 false。move_uploaded_file()在大多数情况下,会发生这种情况,因为给定的文件无效。

在这种情况下,您可以调试数据。只需测试一下,您正在使用的内容包含哪些数据。文件名有效吗?目的地有效吗?一切都可以访问吗?

echo "<pre>";
var_dump($imgAddr, $upload_dir . '/ImgsSended/' . $imgName);
echo "</pre>";

现在您可以看到您正在尝试执行的操作的内容。哪些数据包含$imgAddr变量。它是有效的文件名吗?目的地包含什么?它是现有目录的有效路径吗?PHP可以访问这个目录吗?

您可以使用以下代码行来测试是否存在。

is_dir($upload_dir . '/ImgsSended/');

如果返回true,则给定目录存在,这不可能是错误的原因。

它总是与调试有关。必须阅读并理解错误。它们包含对您有用的信息。


查看完整回答
反对 回复 2023-08-06
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信