【问题标题】:Move_uploaded_file() function working on Linux server but not on Windows serverMove_uploaded_file() 函数在 Linux 服务器上工作,但在 Windows 服务器上不工作
【发布时间】:2015-03-23 16:58:39
【问题描述】:

我遇到了问题。我创建了一个表格,人们可以从中申请工作。我有 3 个字段允许用户上传简历、参考资料和其他材料。这种形式在我基于 linux 的服务器上完美运行。当我将它上传到 Windows 服务器时,我收到以下错误:

Warning: move_uploaded_file(./application/D:\Temp\php\php945C.tmp_tumblr.png) [function.move-uploaded-file]: failed to open stream: Invalid argument in D:\Hosting\9664396\html\application.php on line 23
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\Temp\php\php945C.tmp' to './application/D:\Temp\php\php945C.tmp_tumblr.png' in D:\Hosting\9664396\html\application.php on line 23

任何帮助将不胜感激。

代码如下:

if(isset($_FILES["photoToUpload"]['name'])){
        $original_img_name = $_FILES["photoToUpload"]['name'];
    } else {
        $original_img_name = "";
    }

    $the_photo_url="None Uploaded";
    if($original_img_name != ""){
        $target = './application/';

        $img_name = str_replace("&", "and", $original_img_name);
        $img_name = preg_replace('/[^.a-zA-Z\d\s]+/s', '', $img_name);
        $img_name = str_replace('  ', ' ', $img_name);
        $img_name = str_replace(' ', '_', $img_name);
        $img_name = str_replace("/", "", $_FILES["photoToUpload"]['tmp_name']) . "_" . $img_name;

        move_uploaded_file($_FILES["photoToUpload"]['tmp_name'], $target . $img_name);
        $the_photo_url = $target . $img_name;
    }

这段代码在我基于 linux 的主机上运行完美。

【问题讨论】:

  • 您的路径似乎未正确生成:./application/D:\Temp 等。请在此处post your code,否则我们无法为您提供帮助。
  • 请向我们提供您的代码,您似乎使用了无效的目标路径,./application/D: .....
  • 我添加了代码。谢谢你看看这个。

标签: php


【解决方案1】:

下一行是错误的,您应该在将 tmp_name 添加到 $img_name 时将其删除。

$img_name = str_replace("/", "", $_FILES["photoToUpload"]['tmp_name']) . "_" . $img_name;

【讨论】:

  • 对不起。哪条线错了?我应该删除什么?
  • move_uploaded_file函数之前的行
  • 我认为这有效,但现在我收到以下错误:警告:move_uploaded_file(./application/tumblr.png) [function.move-uploaded-file]: failed to open stream: Permission denied在 D:\Hosting\9664396\html\application.php 第 23 行警告:move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\Temp\php\php89B7.tmp' to './ application/tumblr.png' 在 D:\Hosting\9664396\html\application.php 第 23 行
  • 这是目标文件夹的问题,你在windows系统,但你指定的路径是unix路径(./application/tumblr.png)我不熟悉windows环境下的php但我认为这可能是错误,我不知道您是否可以使用点 (.) 作为当前目录以及是否可以使用 / 作为目录分隔符而不是 \。尝试给我们一个绝对路径,看看它是否像 $target="D:\Hosting\9664396\html\application\" 或使用更好的方法 $target = dirname(_ FILE_)。 \应用\';请注意,我在 FILE_ 之前放置了一个空格,您必须删除它
  • 谢谢大卫。非常感谢您的帮助!我只需要更改文件权限,它现在就可以工作了。我有同样的问题。我对windows环境下的php也不熟悉。
猜你喜欢
  • 2015-09-11
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 2015-12-23
  • 1970-01-01
相关资源
最近更新 更多