繁体   English   中英

php从一个dir重命名(移动)到另一个两个级别

[英]php rename (move) from one dir to another that is two levels back

我的脚本文件路径是:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\可湿性粉剂内容\\插件\\测试\\ test.php的

我需要从这条路径运行代码,从路径移动图像:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\的wp-content \\上传\\ 2017年\\ 04

至:

C:\\ XAMPP \\ htdocs中\\ WordPress的\\的wp-content \\上传\\图片

我的问题是,我不知道如何强制“重命名”回到路径中的两个目录。

我在尝试这样的事情:

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');

错误我正在获取atm(我已经更改了我的文件夹权限,所以也许它是路径的东西?):

Warning: rename(C:\xampp\htdocs\wordpress\wp-content\uploads\2017\04\obrazek.png,C:\xampp\htdocs\wordpress\wp-content\uploads\images): access denied
. (code: 5) in C:\xampp\htdocs\wordpress\wp-content\plugins\uploadsdir-manager\test.php on line 16

编辑重命名代码:

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');
$destPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/images');
/*$srcDir = opendir($srcPath);*/
echo $srcPath ;

sleep(1); 
rename($srcPath, $destPath);

看来你是在Windows机器上,所以你使用了错误的斜杠: /../..' . '/uploads/2017/04/obrazek.png' /../..' . '/uploads/2017/04/obrazek.png'

你可以尝试用反斜杠替换它们: \\..\\..\\uploads\\2017\\04\\obrazek.png'

或者您可以尝试这样的事情:

$path = substr($srcPath, 0, strrpos($srcPath, '\20'));

// $path now contaits: 'C:\xampp\htdocs\wordpress\wp-content\uploads';

// Then you can do:

$srcPath = $path . '\images';

关于警告错误:

Warning: rename(C:\xampp\htdocs\wordpress\wp-content\uploads\2017\04\obrazek.png,C:\xampp\htdocs\wordpress\wp-content\uploads\images): access denied. (code: 5) in C:\xampp\htdocs\wordpress\wp-content\plugins\uploadsdir-manager\test.php on line 16

您似乎尝试将文件重命名为目录,因此可能忘记将文件名附加到新路径。

$srcPath包含一个文件。 $destPath包含一个目录,但它应该包含文件名。

从它看,它看起来是错误的

$srcPath = realpath(dirname(__FILE__) . '/../..' . '/uploads/2017/04/obrazek.png');

它应该是

$srcPath = realpath(dirname(__FILE__) . '../..' . '/uploads/2017/04/obrazek.png');

你在开头有一个额外的/斜杠。

我终于花了好几个小时..找出如何修复它,所以你去了:

$srcPath =  (realpath (dirname(__FILE__) . '\..\..' . '\uploads\2017\04') . '\obrazek2.png');
$destPath = (realpath (dirname(__FILE__) . '\..\..' . '\uploads\images') . '\obrazek2.png');

rename ($srcPath , $destPath );

关键是添加文件名. '\\obrazek2.png' . '\\obrazek2.png'在dirname()之后,因为如果filename在dirname()内,并且它是重命名的目标路径,那么它返回空... :)

不确定我是否足够清楚,因为我的英语,但它有效,并希望它能帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM