无法将文件上传到 Apache 2.2
Can't upload file to Apache 2.2
Apache/2.2.15 (Win32) PHP/5.3.2
我正在尝试将文件上传到 Apache,我的 PHP 脚本告诉我一切顺利(状态代码 0),但该文件不在临时目录中。 PHP 答案总是立即出现,无论文件大小如何。 PHP 错误日志根本没有显示任何错误。
Apache 服务器 运行 在其自己的用户帐户上,具有对日志和文档文件夹的完全访问权限。
PHP.ini
file_uploads = On
upload_tmp_dir =
upload_max_filesize = 10M
upload_tmp_dir="C:\WINDOWS\Temp"
send.html
<!DOCTYPE html>
<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post" >
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>
upload.php
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
echo '<pre>';
print_r($_FILES);
echo '</pre>';
?>
结果是这样的
Array
(
[userfile] => Array
(
[name] => strings.lua
[type] => application/octet-stream
[tmp_name] => C:\WINDOWS\Temp\phpC0.tmp
[error] => 0
[size] => 9935
)
)
文件 C:\WINDOWS\Temp\phpC0.tmp 不存在。
还有什么我遗漏的considerations/configurations吗?
Apache 服务器已 运行 PHP 超过 5 年,并且在所有其他方面都运行良好。我无法将 Apache 或 PHP 升级到更新版本,因为这是一个生产中的应用程序,客户不会冒险升级。
临时文件只存在于您的 PHP 脚本 upload.php
结束之前。这真的是暂时的。
您应该立即使用 move_uploaded_file
:
移动文件
http://www.php.net/move_uploaded_file
类似于:
$savePath = "path/where/you/really/wantit/" . $_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $savePath);
从这个link:
http://us3.php.net/manual/en/features.file-upload.post-method.php
The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.
Apache/2.2.15 (Win32) PHP/5.3.2
我正在尝试将文件上传到 Apache,我的 PHP 脚本告诉我一切顺利(状态代码 0),但该文件不在临时目录中。 PHP 答案总是立即出现,无论文件大小如何。 PHP 错误日志根本没有显示任何错误。
Apache 服务器 运行 在其自己的用户帐户上,具有对日志和文档文件夹的完全访问权限。
PHP.ini
file_uploads = On
upload_tmp_dir =
upload_max_filesize = 10M
upload_tmp_dir="C:\WINDOWS\Temp"
send.html
<!DOCTYPE html>
<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post" >
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>
upload.php
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
echo '<pre>';
print_r($_FILES);
echo '</pre>';
?>
结果是这样的
Array
(
[userfile] => Array
(
[name] => strings.lua
[type] => application/octet-stream
[tmp_name] => C:\WINDOWS\Temp\phpC0.tmp
[error] => 0
[size] => 9935
)
)
文件 C:\WINDOWS\Temp\phpC0.tmp 不存在。
还有什么我遗漏的considerations/configurations吗? Apache 服务器已 运行 PHP 超过 5 年,并且在所有其他方面都运行良好。我无法将 Apache 或 PHP 升级到更新版本,因为这是一个生产中的应用程序,客户不会冒险升级。
临时文件只存在于您的 PHP 脚本 upload.php
结束之前。这真的是暂时的。
您应该立即使用 move_uploaded_file
:
http://www.php.net/move_uploaded_file
类似于:
$savePath = "path/where/you/really/wantit/" . $_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $savePath);
从这个link:
http://us3.php.net/manual/en/features.file-upload.post-method.php
The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed.