PHP move_uploaded_file 导致错误 #1

PHP move_uploaded_file results in error #1

我尝试根据以下代码将文件上传到外部服务器:https://www.w3schools.com/php/php_file_upload.asp .
在我的本地机器上一切正常,但是当将完全相同的脚本上传到外部服务器时,它将不再工作。调试时:

$_FILES["fileToUpload"]["error"]

我在 return 中收到错误 #1,尽管我 运行 与我本地计算机上的 php.ini 相同。 uploads/ 文件夹存在,用户 www-data 也有写入权限。我通过 运行 file_put_contents("uploads/test.txt", "working"); 证明了这一点。我唯一能想到的是 PHP 版本差异(本地:7.2.5;外部:7.2.19)或者可能缺少 php 模块?!

如果有人能帮我解决这个问题就好了。

尝试使用完整路径,使用$_SERVER['DOCUMENT_ROOT'] also try to create recursively your folders using mkdir并将第三个参数设置为true(如果不存在您的路径),增加您的upload_max_filesize正如安德烈亚斯在评论中所建议的那样...这是一个伪工作示例...

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Upload</title>
</head>
<body>
<form name="form" method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Upload File: <input type="file" size="30" id="fileToUpload" name="fileToUpload">
<?php
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/upload/var/www/html/";
if (!is_dir($upload_dir)) { 
  @mkdir($upload_dir, 0755, true);
}
if ((isset($_FILES['fileToUpload']['name'])) && (!empty($_FILES['fileToUpload']['name']))) {
  $temp_name = $_FILES['fileToUpload']['tmp_name'];
  $file_name = $_FILES['fileToUpload']['name'];
  $file_path = $upload_dir.$file_name;
  $upload_process = move_uploaded_file($temp_name, $file_path);
  @chmod($file_path,0755);
}
if ((isset($upload_process)) && ($upload_process == TRUE)) {
  echo "File Uploaded With Success...";
}
if ((!isset($upload_process)) || ($upload_process == FALSE)) {
  echo "Please, Upload some File...";
}
?>
<input type="submit" name="submit" value="Upload">
</form>

</body>

</html>

希望对您有所帮助。

好吧,我傻了。我更改了错误的 php.ini 文件。对于遇到类似问题的任何人,您可以检查 php.ini 文件的位置,以及它是否由 PHP 加载:

$inipath = php_ini_loaded_file();

if ($inipath) {
    echo 'Loaded php.ini: ' . $inipath;
} else {
    echo 'A php.ini file is not loaded';
}

希望对您有所帮助。