所以在你的帮助下我能够组装下面的内容。
$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,我似乎无法移动到每个特定文件的动态创建目录。我假设它与我不使用重命名到正确的参数这一事实有关。以下是我试图让它重命名和移动的一些组合。
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,如果它当前正在处理的文件叫做Jason&#39;然后它会创建./reporting/historic-metrics/Jason但是将文件移动到./reporting/historic-metrics /
答案 0 :(得分:0)
似乎有两种可能性:
源文件路径或目标文件路径可能有误,您可以打印并检查
新创建的目标目录正在获取 正确的许可和所有权。
否则您的脚本看起来没问题。
答案 1 :(得分: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);
}
}