这是我在 stackoverflow 上发表的第一篇文章。我在此站点上搜索了此问题的其他解决方案,但找不到任何解决方案。我什至与 GoDaddy 支持进行了广泛的交流,但没有成功。
这是我的代码,根据 PHP 引用稍作修改:
<html>
<body>
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
if (isset($_POST['submit'])){
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$tmpfile = $_FILES['userfile']['tmp_name'];
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'File name: '.$uploadfile."\r\n";
echo 'Temp file: '.$tmpfile."\r\n\r\n";
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
}
}
?>
<form enctype="multipart/form-data" action="#" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="submit" name="submit" id="submit" value="Send File" />
</form>
</body>
</html>
上传文件时的输出是这样的:
Warning: move_uploaded_file(uploads/Bender.jpg): failed to open stream: No such file or directory in /home/nflaum/public_html/_working/file_upload.php on line 15
Warning: move_uploaded_file(): Unable to move '/tmp/phpWmeSDx' to 'uploads/Bender.jpg' in /home/nflaum/public_html/_working/file_upload.php on line 15
Possible file upload attack! File name: uploads/Bender.jpg Temp file: /tmp/phpWmeSDx
Here is some more debugging info:Array (
[userfile] => Array
(
[name] => Bender.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpWmeSDx
[error] => 0
[size] => 91463
)
)
以下是我已经尝试过的东西:
创建了我自己的 php.ini 文件并尝试了所有可以想到的 upload_tmp_dir 组合(使用 phpinfo 验证),包括我自己和 GoDaddy 代表。已验证 file_uploads 已开启,所有设置均正常。
验证文件夹对尝试的每个组合都有 777 权限。
尝试重命名 .htaccess 以防某些路由配置导致问题。
连接到 SSH 并检查根/tmp 文件夹以查看它是否存在(GoDaddy 将主文件夹设置为/home/)
这些都没有解决问题。看起来 PHP 认为该文件已正确上传,但无处可寻。我希望这个论坛上的一位天才能够帮助我看到我错过的东西。
最佳答案
我认为脚本当前位置的路径不正确。你检查了吗?文件夹“uploads”是否在 file_upload.php 脚本的同一目录中?
关于PHP 文件上传到 linux cPanel 显示成功,但找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860913/