首页 > 解决方案 > PHP Copy 有效,但重命名无效

问题描述

今天,我收到了一个错误警报,该错误于 2019 年 8 月 30 日开始出现在我公司的系统中。

这是老式的 PHP,警告是这样的(服务器名被屏蔽):

Warning: rename(\\gs-nkpg-raster\RASTER_IN\PROPRIUS\UT-MAPP\customername\print\GP-PP23479_Pelle_TESTee.pdf,.\customer_media\customername\org\_img_print\GP-PP23479_Pelle_TESTee.pdf)
[function.rename]: No such file or directory in  C:\www.xxx.yyy.se\admin_original_files.php on line 178

由于我无法从admin_original_files.php粘贴整个代码,我制作了一个测试文件,并且在那里发生了同样的错误。

测试.php

<?php

$source = "\\\\gs-nkpg-raster\\RASTER_IN\\PROPRIUS\\UT-MAPP\\customername\\print\\GP-PP23479_Pelle_TESTee.pdf";
$dest = ".\\customer_media\\customername\\org\\_img_print\\GP-PP23479_Pelle_TESTee.pdf";

if (file_exists($source))
    echo "$source exists<br>\n";
else
    echo "$source does not exists<br>\n";

if (copy($source,$dest))
    echo "source was copied to dest<br>\n";
else
    echo "copy failed<br>\n";

if (rename($source,$dest))
    echo "source was moved to dest<br>\n";
else
    echo "move failed<br>\n";

if (unlink($source))
    echo "source was deleted<br>\n";
else
    echo "unlink source failed<br>\n";

if (unlink($dest))
    echo "dest was delete<br>\n";
else
    echo "unlink dest failed<br>\n";

?>

上面的代码导致:

\\gs-nkpg-raster\RASTER_IN\PROPRIUS\UT-MAPP\customername\print\GP-PP23479_Pelle_TESTee.pdf exists

source was copied to dest

Warning: rename(\\gs-nkpg-raster\RASTER_IN\PROPRIUS\UT-MAPP\customername\print\GP-PP23479_Pelle_TESTee.pdf,.\customer_media\customername\org\_img_print\GP-PP23479_Pelle_TESTee.pdf) [function.rename]: No such file or directory in C:\www.xxx.yyy.se\test.php on line 16

move failed

source was deleted

dest was delete

如您所见,除了重命名之外的所有内容都有效。重命名部分从一开始就一直有效,直到现在。有什么线索吗?

编辑:我想我应该提到我也相信这是一个权限问题(如下面的评论中所述)。但主要问题是为什么它突然出现(以及如何修复它,ofc)。该代码至少有 10 年的历史,并且在过去 10 年里一直完美地运行着。

编辑2:我现在了解到这个问题首先发生在雷雨/停电前一个月左右,所以服务器重启似乎与这种情况无关。

标签: phpcopyrename

解决方案


推荐阅读