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';
}
希望对您有所帮助。
我尝试根据以下代码将文件上传到外部服务器: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';
}
希望对您有所帮助。