【问题标题】:Renaming Server File Error (http wrapper does not support renaming) [PHP]重命名服务器文件错误(http 包装器不支持重命名)[PHP]
【发布时间】:2018-10-21 14:33:32
【问题描述】:

在我的页面上,用户可以上传文档,这些文档将保存在用户特定的文件夹中。目录存储在一个 url 中:http://localhost/folder/user/documentA_user_timestamp.ext 在数据库中。

用户还可以删除文件,这会删除数据库中的文件条目,但我希望将文件移动到指定的存档文件夹。但是,当 php rename() 尝试执行其工作时,我总是会收到此错误消息:

http wrapper 不支持在...中重命名

我似乎无法理解错误消息并找出它的原因

$filepath = $_POST['file'];
$archivePath = FILESYS_DOCS_ARCHIVE . basename($filepath);

if (!file_exists(FILESYS_DOCS_ARCHIVE)){
    mkdir(FILESYS_DOCS_ARCHIVE, 0777);
}

$success = rename($filepath, $archivePath);

if ($success){
    echo "SUCCess";
} else {
   echo $archivePath;
}

【问题讨论】:

  • php 是否显示一些错误?你检查过php错误日志吗?
  • 调用重命名命令时$filepath$archivePath的值是多少?我猜其中至少有一个包含 URL 而不是磁盘上的路径。另请显示完整的错误消息,而不是其中的 sn-p。谢谢
  • @Sakezzz 问题中已经提到了错误...
  • @ADyson 两个值都是 url: "localhost/folder..." 我必须将它们转换为目录路径 "C:/...." 吗?
  • 是的。否则,它会尝试向该 URL 发出 HTTP 请求,显然您无法通过 HTTP 重命名文件。不要忘记 PHP 是在你的服务器上执行的,所以它可以直接访问服务器磁盘,在这个过程中不需要通过 URL 或任何东西来引用它。

标签: php file rename


【解决方案1】:

使用这个

$dir = str_replace('http://','',base_url()); rename($dir.'旧文件名', $dir.'/新文件名')

【讨论】:

  • 请在您的代码中添加一些解释,以便其他人更好地理解它。
猜你喜欢
  • 2015-07-18
  • 1970-01-01
  • 2012-02-18
  • 2014-09-09
  • 1970-01-01
  • 2011-10-07
  • 2014-01-20
  • 2016-05-22
  • 2012-08-06
相关资源
最近更新 更多