Changeset 1716 in genapp


Ignore:
Timestamp:
Mar 30, 2020, 3:46:59 AM (2 months ago)
Author:
ehb
Message:

fix for sys_files deleting files on symlinked drive

File:
1 edited

Legend:

Unmodified
Added
Removed
  • languages/html5/sys/sys_files.php

    r498 r1716  
    482482
    483483          // now actually do it
     484         
     485          $debug_on = 0;
     486          __~debug:deletefiles{$debug_on = 1; // set from directives:debug:deletefiles}
     487          if ( $debug_on ) {
     488              $results[ "error" ] = "Debugging on, nothing removed, email sent";
     489              error_mail( "sys_files.php\n" .
     490                          "Debugging information\n" .
     491                          print_r( $results, true ) . "\n" . print_r( error_get_last(), true ));
     492              echo (json_encode($results));
     493              exit();
     494          }
     495
    484496          $do_it = 1;
    485497          if ( $do_it )
     
    534546                     $cont = ob_get_contents();
    535547                     ob_end_clean();
    536                      $results[ "error" ] = "Could not rename $file to $deldir/$file " . $cont;
    537                      error_mail( "sys_files.php\n" .
    538                          "during delete move directories\n" .
    539                              print_r( $results, true ) . "\n" . print_r( error_get_last(), true ));
    540                      echo (json_encode($results));
    541                      exit();
     548                     $error_last = error_get_last();
     549                     if ( preg_match( "/Invalid cross-device link/", $error_last[ 'message' ] ) ) {
     550                         # special handling for symlinked drives where we can not move a directory
     551                         $spec_cmd = "( rsync -a $file/* $deldir/$file/ && rm -fr $file ) >> /tmp/mylog 2>&1";
     552                         __~deletefilesnorsync{$spec_cmd = "( rm -fr $file ) >> /tmp/mylog 2>&1";}
     553                         error_log( "spec_cmd = " . $spec_cmd . "\n", 3, "/tmp/mylog" );
     554                         `$spec_cmd`;
     555                     } else {
     556                         $results[ "error" ] = "Could not rename $file to $deldir/$file " . $cont;
     557                         error_mail( "sys_files.php\n" .
     558                                     "during delete move directories\n" .
     559                                     print_r( $results, true ) . "\n" . print_r( error_get_last(), true ));
     560                         echo (json_encode($results));
     561                         exit();
     562                     }
    542563                  }
    543564              }
     
    556577                         $results[ "error" ] = "Could not create directory " . $makedir . " " . $cont;
    557578                         error_mail( "sys_files.php\n" .
    558                              "since it was moved and we need to recreated it\n" .
     579                             "since it was moved and we need to recreate it\n" .
    559580                                 print_r( $results, true ) . "\n" . print_r( error_get_last(), true ));
    560581                         echo (json_encode($results));
     
    647668
    648669echo json_encode( $result_dirs );
    649 ?>
Note: See TracChangeset for help on using the changeset viewer.