移动文件到目录
Move file to directory
因此,在您的帮助下,我能够 assemble 以下内容。
$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 到其正确参数的事实有关。以下是我尝试让它重命名和移动的一些组合。
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' 那么它将创建 ./reporting/historic-metrics/Jason 但将文件移动到 ./reporting/historic-metrics/
好像有两种可能:
源文件或目标文件路径可能有误,您可以打印查看
新建的目标目录正在获取
正确的权限和所有权。
否则你的脚本看起来没问题。
我终于明白了。我的主要问题是试图获取文件路径以将文件发送到。经过几次中断并重新考虑我的方法后,我想到了以下内容。我知道它不漂亮或尽可能薄,但它完美地完成了工作。
$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);
}
}
因此,在您的帮助下,我能够 assemble 以下内容。
$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 到其正确参数的事实有关。以下是我尝试让它重命名和移动的一些组合。
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' 那么它将创建 ./reporting/historic-metrics/Jason 但将文件移动到 ./reporting/historic-metrics/
好像有两种可能:
源文件或目标文件路径可能有误,您可以打印查看
新建的目标目录正在获取 正确的权限和所有权。
否则你的脚本看起来没问题。
我终于明白了。我的主要问题是试图获取文件路径以将文件发送到。经过几次中断并重新考虑我的方法后,我想到了以下内容。我知道它不漂亮或尽可能薄,但它完美地完成了工作。
$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);
}
}