PHP:rename()如何找到错误原因?

时间:2012-07-06 10:32:39

标签: php

我想打印出错误的原因。

error_get_last()似乎没有返回任何内容。 rename()返回TRUE | FALSE而不是异常。

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

4 个答案:

答案 0 :(得分:5)

首先,在以下之前添加一些安全检查是更好的做法:

if (file_exists($old_name) && 
    ((!file_exists($new_name)) || is_writable($new_name))) {
    rename($old_name, $new_name);
}

其次,您可以启用错误报告:

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

答案 1 :(得分:4)

答案是'另一个错误处理程序'正在根据http://php.net/manual/en/function.error-get-last.php的php手册中的注释捕获错误。在这种情况下,它是drupal错误处理程序,错误被捕获到那里的错误日志中。

答案 2 :(得分:1)

您似乎正在尝试移动上传的文件,而是使用move_uploaded_file

答案 3 :(得分:0)

另一种方法是使用copy()复制到所需的新名称(可以验证)和消息...然后使用unlink()删除原始名称。

但是,是的,rename()完全按照您的说法完成,并且在不起作用时不会产生任何错误:)