无法将文件上传到Apache 2.2

时间:2016-02-26 01:25:21

标签: php apache2 uploading windows-server-2003

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不存在。

我错过了其他任何考虑因素/配置吗? Apache服务器已运行PHP超过5年,并且在所有其他方面都可以正常工作。我无法将Apache或PHP升级到更新版本,因为这是一个生产中的应用程序,客户不会有升级风险。

1 个答案:

答案 0 :(得分:1)

临时文件仅存在于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);

从这个链接:

http://us3.php.net/manual/en/features.file-upload.post-method.php

  

如果文件尚未移走或重命名,该文件将在请求结束时从临时目录中删除。