7

我想打印出错误的原因。

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

4 回答 4

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);
于 2012-07-06T10:37:23.120 回答
4

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

于 2012-07-07T03:52:03.577 回答
1

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

但是,是的,rename()完全按照你说的做,当它不起作用时不会产生错误:)

于 2012-07-06T10:39:09.493 回答
1

您似乎正在尝试移动上传的文件,请改用move_uploaded_file

于 2012-07-06T10:39:51.710 回答