我试图重命名/移动目录中的文件,并且给文件起了新名称,也给了新目录。以下是此类代码的片段:
$currentFilePath = FCPATH . $forms->form_filepath;
$current_name = $stageDir . '/' . $forms->FormName . '.pdf';
$newname = file_exists($current_name) ? uniqid('', true) . 'pdf' : $current_name;
// $currentFilePath = "/var/www/html/epa_editor/public/epa_forms/archive/Clone_16621_SamplePDFFile_5mb.pdf"
// $newname = "/var/www/html/epa_editor/public/epa_forms/stage/testing (Clone of Form #: 15615).pdf"
try {
$success = rename($currentFilePath, $newname);
} catch (Exception $e) {
$error = $e->getMessage();
log_message('error', print_r('An error has occurred: %s', $e->getMessage()));
}
由于某些原因,rename()
返回如下错误:
协议错误var / www / html / editor / application / models / forms_model.php 455
第455行是$success = rename($currentFilePath, $newname);
,我不确定这是什么意思以及如何解决它,因此非常欢迎提供帮助。
我正在调试此代码,甚至无法进入catch
并查看确切的错误是什么。
在rename文档中,我找不到任何有用的东西,在Google和类似的post中,我也发现对于推荐功能完全相同的目录之间的移动文件没有帮助。
我必须在这里添加的一件事是这是一台运行CentOS 6.10和PHP 5.3.3的VM,但是文件位于Windows 10 Enterprise主机中并与该VM共享,不确定该问题是否出自此主机
更新: 较深的Google搜索“暗网”将我引向this result,这似乎是VirtualBox本身的一个问题,即使我使用的是最新版本也是如此。那张票已经关闭并且不确定是否标为“过时”,但是我将为VBox团队开放一个新票,以便他们可以对此进行研究。
更新2:
我现在尝试按照@lxg的建议直接在VM中执行命令mv
,这是结果:
$ mv /var/www/html/epa_editor/public/epa_forms/archive/Clone_16621_SamplePDFFile_5mb.pdf "/var/www/html/epa _editor/public/epa_forms/stage/testing (Clone of Form #: 15615).pdf"
mv: cannot move `/var/www/html/epa_editor/public/epa_forms/archive/Clone_16621_SamplePDFFile_5mb.pdf' to `/var/www/html/epa_editor/public/epa_forms/stage/testing (Clone of Form #: 15615).pdf': Protocol error
显然,当主机为“ Windows”时,VBox出现共享文件夹问题,因此我将同时为他们打开一张票证,并让他们知道两年后问题仍未解决。
更新3: 如果有人遇到同样的问题,我已经为VBox团队开放了ticket。