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 に答える