Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么move_上传的_文件不起作用?_Php_File Upload_File Io - Fatal编程技术网

Php 为什么move_上传的_文件不起作用?

Php 为什么move_上传的_文件不起作用?,php,file-upload,file-io,Php,File Upload,File Io,每当我试图移动一个文件,它不工作,并显示“图像文件未上传”。。。我只是想知道错误在哪里 $target = '/var/www/student/public/myimage.jpg'; $destination = '/var/www/student/public/images/myimage.jpg'; if( move_uploaded_file( $target, $destination ) ) { echo "Image file is successfully loaded

每当我试图移动一个文件,它不工作,并显示“图像文件未上传”。。。我只是想知道错误在哪里

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';

if( move_uploaded_file( $target, $destination ) ) {
    echo "Image file is successfully loaded";                           
} else {

   echo "Image file not uploaded.";
}
  • 我检查了错误日志(
    tail-f/var/log/apache2/error.log
    ),但没有找到任何东西
  • 目标和目标目录都具有777权限
有人能告诉我如何找出错误吗。有什么想法吗?

移动上传的文件()仅适用于http post文件

要移动服务器上已有的文件,必须复制该文件并取消旧文件的链接

$target = '/var/www/student/public/myimage.jpg';
$destination = '/var/www/student/public/images/myimage.jpg';
if (copy($target, $destination)) {
   unlink($target);
} else {
   echo "Unable to copy $target to $destination.";
}

文件是否已在当前请求中上载

移动上传的文件
将拒绝移动未上传的文件。(即,
$target
必须等于
$\u文件[$field\u name]['tmp\u name']

如果之前已经上传过,
move\u uploaded\u file
将拒绝工作(如果它仍然存在,如果你没有处理上传的文件,如果我没记错的话,PHP将删除它)


如果它实际上不是随此请求一起上载的文件,则您需要使用
rename

如果您不使用HTTP POST upload方法,则可以使用
rename()


您实际使用的代码是什么?您提供的代码显然不起作用,因为目标必须通过PHP的HTTP POST上载机制上载。为什么这个标记为zend framework?而您使用的函数是错误的。请阅读其中的PHP文档().File已由其他脚本上载,我正在将此文件移动到服务器中的其他文件夹…@Student您不能使用move_uploaded_File来移动其他上载的内容。您必须按照下面的建议使用重命名。甚至还有一个优化版本。名为。-1:要移动文件,请使用
重命名()
,而不是
复制()
。在大型文件上,两者之间有很大区别。
rename()
只需修改文件表以指向新位置;
copy()
创建文件的全新副本。复制是一个有效选项,因为有时您对文件只有读取权限。重命名对具有读取权限的文件不起作用。我遇到过这样的情况:除非我具有根访问权限,否则无法授予对文件的权限。如果文件已上载到另一页,则它将已被删除当你尝试调用此文件时,它会被删除,
move\u uploaded\u file
将拒绝工作,即使它仍然在那里。你必须在上传文件的请求中处理上传的文件,否则如果我记得正确,PHP将删除它。是的。文件已经通过其他脚本上传到服务器。我正在移动它。谢谢
rename($target, $destination);