繁体   English   中英

PHP:move_uploaded_file 不起作用

[英]PHP: move_uploaded_file doesn't work

我只想将临时文件移动到指定的文件夹。 这是我的代码。

        $uploads_dir = $_SERVER['DOCUMENT_ROOT'].'/upload';
        $name = basename($_FILES["csv"]["name"]);
        $tmp_name = $_FILES["csv"]["tmp_name"];
        chmod("{$uploads_dir}/{$name}", 0755);

        if (!move_uploaded_file($tmp_name, "{$uploads_dir}/{$name}")):
            array_push($fileErrArr, "fail to move uploaded file");
        endif;

这是来自 httpd 日志的错误消息。 它甚至没有提到“许可”的东西。

[错误] [客户端 XXX] PHP 警告:move_uploaded_file(/var/www/html/upload/XXX.csv):无法打开流:\\xe8\\xa8\\xb1\\xe5\\x8f\\xaf\\xe3\\x81\\x8c\\ xe3\\x81\\x82\\xe3\\x82\\x8a\\xe3\\x81\\xbe\\xe3\\x81\\x9b\\xe3\\x82\\x93 in /var/www/html/XXX/action.php on line 115,referer: https: //XXX/

[错误] [客户端 XXX] PHP 警告:move_uploaded_file():无法将“/tmp/php40tPEO”移动到“/var/www/html/XXX/action”中的“/var/www/html/upload/XXX.csv”。 php 115 行,引用: https://XXX/

任何帮助表示赞赏。 谢谢!

我想你可以用这个<?php echo exec('whoami'); ?> <?php echo exec('whoami'); ?>检查您的 PHP 脚本运行程序。

然后使用ls -l查看目标方向谁是所有者。

确保跑步者和所有者是相同的。

例如:php runner 可能是 www-data,目标文件夹所有者可能是 admin。 使用:

chown www-data /var/www/xxx/upload
chmod 755 /var/www/xxx/upload

它可能会起作用。

大家好,我最近确实遇到了这个错误,我也是初学者,仅用了 3 个小时就解决了这个问题,这对我有帮助。 我使用 Linux AMI EC2 实例。

问题可能完全在于文件夹的“可写性”(抱歉,我不太熟悉术语,请耐心等待)可能只允许根目录使用

首先在live serve上制作一个脚本并包含此代码以了解将执行php的move_uploaded_file命令的客户端的名称是什么

<?php
echo exec('whoami');    
?>

然后它的结果是给我“apache”作为我的客户的用户在它查找文件夹之后,目标检查它是否可以由客户端使用

ls -lh /var/www/文件夹/

然后你会看到像 root 和 www 一样将其更改为

chown -R apache:apache/文件夹目的地

时刻注意用户是whoami php脚本的结果

希望这有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM