使用此代码块,我可以在php中以编程方式重命名符号链接;
$argSource = escapeshellarg($old_name);
$argDestination = escapeshellarg($new_name);
$cmd="mv ".$argSource." ".$argDestination;
exec($cmd, $retOutputArray,$retValRename);
当我在$old_name
和$new_name
中有空格时,代码可以正常工作。
问题在于$old_name
;
/srv/www/htdocs/filestorage/somefolder/symlink1 //$old_name - will not
//work
重命名将失败,symlink1
将被删除!
关于可能出现什么问题的任何想法?
答案 0 :(得分:1)
将此作为答案,因为它不能作为评论工作:
@marcozen,呃,是的,rename()在符号链接上工作正常:
marc@panic:~/test$ ls -l
total 4
-rw-rw-r-- 1 marc marc 0 Apr 13 09:41 origfile
lrwxrwxrwx 1 marc marc 7 Apr 13 09:41 symlink -> orgfile
-rw-rw-r-- 1 marc marc 54 Apr 13 09:40 z.php
marc@panic:~/test$ cat z.php
<?php
var_dump(rename('symlink', 'renamedsymlink'));
marc@panic:~/test$ php z.php
bool(true)
marc@panic:~/test$ ls -l
total 4
-rw-rw-r-- 1 marc marc 0 Apr 13 09:41 origfile
lrwxrwxrwx 1 marc marc 7 Apr 13 09:41 renamedsymlink -> orgfile
-rw-rw-r-- 1 marc marc 54 Apr 13 09:40 z.php
请注意,符号链接甚至无效。 orgfile
不存在(应该是origfile
,但它已重命名.PHP不会关心它是一个符号链接。
答案 1 :(得分:0)
请注意,此问题已解决。关键是重命名失败后符号链接被删除的事实。
还有另一个负责删除的脚本(不是由我完成的)。该脚本不适用于空格(参数未正确转义)但DID适用于没有空格的路径。
对所有回复的人都有很多感谢。