Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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 命令mv移动文件不工作:-mv:无法移动:没有这样的文件或目录_Php_Linux_Command Line Interface - Fatal编程技术网

Php 命令mv移动文件不工作:-mv:无法移动:没有这样的文件或目录

Php 命令mv移动文件不工作:-mv:无法移动:没有这样的文件或目录,php,linux,command-line-interface,Php,Linux,Command Line Interface,下面的代码片段简要解释了代码:- define('UPLOAD_DONE_PATH','');//This comes from config $uploaddir = '/home/upload';//This comes as functn parameter $uploaddir_done = $uploaddir.UPLOAD_DONE_PATH; $uploaddir_done = str_replace("//","/",$uploaddir_

下面的代码片段简要解释了代码:-

define('UPLOAD_DONE_PATH','');//This comes from config
$uploaddir = '/home/upload';//This comes as functn parameter
$uploaddir_done = $uploaddir.UPLOAD_DONE_PATH;
$uploaddir_done = str_replace("//","/",$uploaddir_done);

$file_array=array();
if (is_dir($uploaddir)) {
      if ($dh = opendir($uploaddir)) {

            while (($allfile = readdir($dh)) !== false) {

                if ($allfile == '.' or $allfile == '..') continue;
                {
                   if (strpos($allfile, 'abc') !== false ) {

                       $file_array[]=$allfile;

                    }
                }

            }

            closedir($dh);

      }
}

...//some code

foreach ($file_array as $key => $csvfile) {

    //Process the file.

    //Move the processed file

    // Method 1 : Not Working
    // copy file from upload to processed folder
     if (copy($uploaddir.$csvfile,$uploaddir_done.$csvfile)) {
        unlink($uploaddir.$csvfile);
        $this->log->info("CSV file is copy into destination folder.".PHP_EOL);
      }else{
          $this->log->info("CSV file is not copy into destination folder.".PHP_EOL);
      }

     //Method 2 : Also not working(Move with shell_exec)
     $from = $uploaddir.$csvfile;
     $fromSpace = $from;
        
      $to = $uploaddir_done.$csvfile;
      $toSpace = $to;
        
      $fromSpace = preg_replace('/\s/i', '\\ ', $fromSpace);
      $toSpace = preg_replace('/\s/i', '\\ ', $toSpace);
        
      $ch_permissions = 'sudo chmod +755 -R '.$fromSpace;
      $mv_cmd = 'mv '.$fromSpace.' '.$toSpace;
        
      $ch_permission_result =  shell_exec($ch_permissions);
      $file_move_result =  shell_exec($mv_cmd);
    }
}
在这两种情况下,移动文件都会导致错误“mv:无法将“/home/upload/abc 09.25.2020.csv”移动到“/home/upload/processed/abc 09.25.2020.csv”:没有这样的文件或目录 "
这似乎是由于文件名中的空格造成的。如何解决此问题?

只需在文件周围添加引号即可
$mv_cmd='mv'.$fromSpace.''.$toSpace.'''