我在使用php脚本上传文件时遇到了一些令人沮丧的问题。问题是我的脚本正在我的本地xampp服务器上运行。但当我将它转移到我的strato主机服务器时,它再也不能工作了。虽然我已将display_errors设置为on并将error_reporting设置为E_ALL,但没有错误输出。
这是我从w3school文件上传教程中复制的完整代码,存储在upload.php文件中:
<?php
$target_dir = "./uploads";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
print_r($_FILES);
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$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 (copy($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
?>
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
每次提交后脚本的输出是:
Array()文件不是image.Sorry,文件已经存在。谢谢,你的 文件未上传。
正如您所看到的,$ _FILES数组是完全空的..无论我上传什么类型的文件。
我检查了我的php.ini以及phpinfo()以获取相关的配置参数。这就是我得到的:
file_uploads = On;
memory_limit = 128M;
post_max_size = 128M;
upload_max_filesize = 128M;
upload_tmp_dir = /tmp;
我尝试上传的文件当然没有超过128MB的限制。
脚本本身不应该导致我的问题,因为它适用于我的本地XAMPP服务器以及许多其他用户和服务器。我的strato服务器配置一定有问题,但我无法弄清问题是什么。 php.ini似乎是怀特。有没有人有想法,线索或者只是暗示?
先谢谢。