PHP move_uploaded_file 将不起作用 - is_writable 和 is_dir = true

PHP move_uploaded_file won't work - is_writable and is_dir = true

我在服务器上上传文件时遇到问题。

我的代码:

$path = "produkty/$kategorie/$last_id/";
if(!is_dir($path)){
  mkdir($path, 0777, true);
}
if (is_dir($path) && is_writable($path)) { echo "ok"; }

它 return 没问题。

上传代码如下所示:

move_uploaded_file($_FILES["uvodniobr"]["tmp_name"], $path."uvodniobr.".$ext)

如果我回显:

echo $path."uvodniobr.".$ext;

它将return这样:produkty/kategorie/35/uvodniobr.png

诸如检查文件大小、扩展名之类的东西工作正常,就是无法上传。 你知道我的代码有什么问题吗?谢谢

已解决 编辑:我试图在不更改 xampp/php/php.ini upload_max_filesize=2M 中的 php.ini 的情况下上传超过 2MB 的文件。 谢谢你的回答。

我猜问题是因为你在 move_uploaded_file 中使用相对路径,而它需要绝对路径所以 您应该使用 document_root 来获取这样的绝对路径:

  $target_path = $_SERVER['DOCUMENT_ROOT'] . '/' .$path; // if not work try    $target_path = $_SERVER['DOCUMENT_ROOT'] . $path;
  move_uploaded_file($_FILES["uvodniobr"]["tmp_name"], 
  $target_path."uvodniobr.".$ext);

另外最好用if括起来查看结果

$target_path = $_SERVER['DOCUMENT_ROOT'] . '/' .$path; // if not work try    $target_path = $_SERVER['DOCUMENT_ROOT'] . $path;
if (move_uploaded_file($_FILES["uvodniobr"]["tmp_name"], 
  $target_path."uvodniobr.".$ext)) {
     echo "File is valid, and was successfully uploaded.\n";
} else {
     echo "Upload failed";
}

帮手linkmove_uploaded_file & relative path

是我的错,我忘了在xampp/php/php.ini

中把upload_max_filesize=2M改成upload_max_filesize=16M

对不起,谢谢你的努力,我真的很感激。