[英]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.