使用mv重命名php中的符号链接

时间:2015-04-13 15:28:54

标签: php linux

使用此代码块,我可以在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将被删除!

关于可能出现什么问题的任何想法?

2 个答案:

答案 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适用于没有空格的路径。

对所有回复的人都有很多感谢。