php rename错误原因的查找方法

在本篇文章里小编给大家整理的是一篇关于php rename错误原因的查找方法,有需要的朋友们可以跟着学习参考下。

打印出错误的原因。

error_get_last()似乎没有返回任何内容。rename()返回true false,而不是异常。

  1. if (!rename($file->filepath, $full_path)) {
  2. $error = error_get_last();
  3. watchdog('name', "Failed to move the uploaded file from %source to %dest", array('%source' => $file->filepath, '%dest' => $full_path));
  4. }

解决办法

首先,最好在以下情况之前新增一些安全检查:

  1. if (file_exists($old_name) &&
  2. ((!file_exists($new_name)) || is_writable($new_name))) {
  3. rename($old_name, $new_name);
  4. }

其次,可以开启错误报告:

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

知识点扩展:

语句:rename(oldname,newname,context)

参数 描述

oldname 必需,规定要重命名的文件或目录.

newname 必需,规定文件或目录的新名称

context 必需,规定文件句柄的环境,context 是可修改流的行为的一套选项

注释:在 php 4.3.3 之前,rename() 不能在基于 *nix 的系统中跨磁盘分区重命名文件.

注释:用于 oldname 中的封装协议必须和用于 newname 中的相匹配.

注释:对 context 的支持是 php 5.0.0 添加的.