2016-06-10 118 views
1

因此,在您的帮助下,我已经能够组装下面。移动文件到目录

$dir = "./reporting/live-metrics/"; 
$des = "./reporting/historic-metrics/"; 
$ctime = time(); 

foreach (glob($dir."*") as $file) { 

$live = file_get_contents($file); 

if (strpos($live, 'CORO') === false && filemtime($file) < time() - 1 * 10) { 
$exclude[] = $live; 
$lines = file($file , FILE_IGNORE_NEW_LINES); 
$lines[3] = 'Taken Down'; 
$lines[5] = $ctime; 
file_put_contents($file , implode("\n", $lines)); 
if (!file_exists($des.basename($file).PHP_EOL)) { 
mkdir($des.basename($file), 0777, true); 
} 
rename($file,$des.$ctime); 
} 
} 

我的问题是,我试图将文件移动到创建的新目录,但我有一个小问题。无论我做什么,只能让它移动到$ des,我似乎无法将ti移动到为每个特定文件创建的动态目录。我假设它与我不使用重命名到正确参数的事实有关。下面是我试图让它重命名和移动的一些组合。

rename($file,$des.basename($file).PHP_EOL.$ctime); //doesn't move or rename 
rename($file,$des.basename($file).$ctime); //adds to historic-metrics/ as jason1465519298 

我也试过创建一个函数并设置重命名来调用它。例如。

$path = $des.basename($file).PHP_EOL; 
rename($file,$path.$ctime); 

目前该脚本是伟大的,直到移动文件。它会将它移动到./reporting/historic-metrics/,但我希望它移动到刚创建的目录。 EG,如果它是目前HANDELING文件名为“杰森”,那么它会创建./reporting/historic-metrics/Jason而是将文件移动到./reporting/historic-metrics/

回答

0

我终于明白了。我的主要问题是试图让文件路径发送文件。经过几次中断并重新思考我的方法后,我想出了下面的内容。我知道这不是很漂亮,也不像可以做的那么苗条,但它完美地完成了这项工作。

$dir = "./reporting/live-metrics/"; 
$des = "./reporting/historic-metrics/"; 
$ctime = time(); 

foreach (glob($dir."*") as $file) { 

$live = file_get_contents($file); 

if (strpos($live, 'CORO') === false && filemtime($file) < time() - 1 * 10) { 
    $exclude[] = $live; 
    $lines = file($file , FILE_IGNORE_NEW_LINES); 
    $lines[3] = 'Taken Down'; 
    $lines[5] = $ctime; 
    file_put_contents($file , implode("\n", $lines)); 
    if (!file_exists($des.basename($file).PHP_EOL)) { 
    mkdir($des.basename($file), 0777, true); 
} 
$user = basename($file); //Gets file name that was used in mkdir 
$path = (String) $des.$user."/"; //Compiles variables into string 
    rename($file,$path.$ctime); 
} 
} 
0

有似乎是两种可能:

  1. 源或目标文件路径可能是错误的,你可以打印和检查

  2. 新创建的目标目录是越来越 正确的权限&所有权。

否则你的脚本看起来不错。

+0

编辑:源文件是罚款。它会将文件移动到以下目的地./reporting/historic-metrics/。我使用mkdir在这个例如./reporting/historic-metrics/Jason中创建一个文件夹,它基于它正在处理的文件。我正试图将文件移动到目标中的这个Jason文件夹中。我遇到的问题是$ des内的目标文件夹是动态的,并且基于它正在处理的文件进行更改。 –

+0

还有权限和所有权吗? –

+0

用图像更新原图,希望有更好的解释。 –