renameについて画像ファイル登録処理を作成中に問題発生

このQ&Aのポイント
  • 新しいサーバーでのテストでrenameが機能しない
  • tmpフォルダと保存フォルダへのrename挙動が異なる
  • 「ID名フォルダ」へのrenameが正常に処理されない
回答を見る
  • ベストアンサー

renameについて

画像ファイル登録処理を作りました。 『参照…』でファイルを選択 →確認画面に遷移、tmpフォルダに画像ファイルを一時保存 →DBに入力した情報を登録後、別フォルダにIDを名前としたフォルダを 作成、画像ファイルをrename という処理を行なっています。 今までのテスト環境では問題なく動作していましたが、新しいサーバー でテストを行なったところ、renameがうまく機能しません。 PHPファイルから見た各フォルダの位置は、以下のとおりになります。 tmpフォルダ→./tmp/ 実際にファイルを保存するフォルダ→../保存フォルダ名/ID/ 上記の「保存フォルダ」へのrenameはうまくいっていますが、 「ID名フォルダ」へのrenameがとおりません。 原因がお分かりになる方、回答よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • kurarigu
  • ベストアンサー率100% (8/8)
回答No.1

PHP初心者なので意図と違う回答でしたらすみません。 renameが通らないというのはファイル移動出来ないという事でしょうか? IDディレクトリを自動作成していらっしゃるようなのでIDディレクトリのパーミッション適切では無いのかも知れません。 自動作成されたIDディレクトリのパーミッションを確認し、適切で無い場合はIDディレクトリを作成した後などに chmod("../保存ディレクトリ名/作成したIDディレクトリ名", 適切なパーミッション値); と実行する事でパーミッションを与える事が出来ます。 見当違いな回答でしたら申し訳ありません。

okti_m131
質問者

お礼

セーフモードOFFで解決しました。 ご回答ありがとうございました。

関連するQ&A

  • phpのrenameでエラーが出ます

    初めて質問させて頂きます。php初心者で困っていますので教えて下さい。 申し込みフォームで画像を選択  ↓ 確認画面($_FILESに入っている画像を、uniqidで生成したファイル名で一時ファイルフォルダに保存 ↓ 確認ボタンを押すと、申込内容をmysqlに登録、autoincrementしたシリアルナンバーを$_SESSIONに格納 ↓ 完了画面でシリアルナンバー+拡張子でアップロードしたファイルをリネーム&フォルダ移動 というプログラムを作っているのですが、最後のリネーム&移動のところでエラーが出てしまいます。 出力されるエラーは Warning: rename( tmp/5194a2db03b16.jpg, photo/164.jpg): in C:\xampp\htdocs\hogehoge\hoge\complete_01.php on line 18 オンラインサーバーにアップすると同じエラーは出ないのですが、コピーはされません。 参考にrename部分のコードです //写真を指定フォルダに移動 $oldpath = " ichiji/". $_SESSION["onamae"]; $newpath = " photo/" . $_SESSION["id"]; $rename = rename($oldpath , $newpath); $_SESSIONとファイルのパスですが、printで正しくデータが渡されていることを確認しています。 どなたか教えてください。

    • ベストアンサー
    • PHP
  • renameについて

    ”ABCDEF”というフォルダに入っている3つのファイルの名前を それぞれ”01,02,03”にしたいとき下記のプログラムで大丈夫ですか? というか、完成していますか? 他にしなくてはいけない事や間違いがあったら教えて下さい。 #! c:/perl/bin/perl $abcdef = './ABCDEF/'; $newname = 01 02 03; foreach $abcdef (@NAME) { my $newname = $abcdef; rename($abcdef,$newname) or warn "Couldn't rename $abcdef to $newname: $!\n"; } パソコン初心者で困っています。実際に実行したくても ”ページが見つかりません”になって確認できないし・・・ インストールは正常に出来たはずなのに・・・ 何でですかね? あと、フォルダに入っているもっと多くのファイル名を変えるとき(1000個とか) にはどうしたらいいんですか? 宜しくお願い致します。

  • CFile::Renameで書き込み途中のファイルがリネームされて困っ

    CFile::Renameで書き込み途中のファイルがリネームされて困っています。 ファイル書き込み中のファイルはリネームしない方法はあるのでしょうか? ファイルのリネーム(CFile::Rename)関数を使用してフォルダ内にあるファイル名をリネームする処理を作成しています。 フォルダ内にはA_で始まるファイルが複数存在し、一定周期で別のスレッドからA_で始まるファイルが書き込まれている状態です。 私が作成している処理は、そのフォルダにA_で始まるファイルが存在する場合に、A_をRename関数でB_にリネームしています。 ここで、別スレッドがA_で始まる新しいファイルを書き込みしている最中に私が作成している処理でRename関数が実行されると、基本的にはExceptionが発生するのですが、Exceptionが発生せずに書き込み途中のファイルがRenameされてしまっています。 1.A_XXX001.txtに書き込み中(100行目まで書き込み完了) 2.Rename処理が実行される。 3.B_XXX001.txtが作成される(100行目までのファイル 作成日:2010.02.04 10:00) 4.その後もA_XXX001.txtに書き込みが行われ200行目まで書き込んで終了 (作成日:2010.02.04 10:02) 結果:B_XXX001.txtファイルは不完全なファイルとして作成されてしまっています。 このような現象が起こってしまっています。 どなたかご教授願います。

  • rename関数 できない

    どうもこんばんは ファイル名を変更したくて、多数のサイトを調べてました。 どのサイトも全く同じことを書いてて rename("b.txt","a.txt"); a.txt を b.txt に変更する場合の記述。 そのとおりにやったのですが、 「Warning: rename(b.txt,a.txt) [function.rename]: No such file or directory in C:\xampp\htdocs\test\test.php on line 13 」 とエラーが吐いてしまい、いくらやってもこうなってしまいます。 エラー文は該当ファイルかディレクトリが無いとかそういう類だと思いますが、原因がわかりません。 これで数時間費やしてしまいまして、ヒントや答えのレスをいただくころには、 copy関数で代用していると思いますが、どうしてrenameできないのか気になります・・ ヒントでもいいので、レスいただければと思います。 因みにwindowsXPでのテスト環境下(XAMPP)です。 PHP Version 5.2.5

    • ベストアンサー
    • PHP
  • Perlで異なるフォルダからファイルをコピーし、ファイル名を変更する方法を教えてください

    前回類似するお願いをしたのですが、 もう一度ご質問させてください。 <やりたいこと> c:\scriptフォルダにある「copyAndRename.cgi」を  起動し、ファイルコピーとRenameをする処理を  行ないたい。 <ファイルコピーの内容> C:\test1フォルダにあるファイル名「test.test.csv」 を、c:\test2フォルダにコピーする <ファイルRenameの内容> C:\test2フォルダにコピーした、ファイル 名「test.test.csv」の「.」をなくし「-」を置き換え、「test-test-csv」とファイル名に変更する処理をしたい。 <できていること> (1)の処理は行なえているので問題ありません。 (2)の処理に関しては、以前の質問させていただいた  回答から、下記のようなスクリプトを書き、実行した  が、Renameされませんでした。 ----- $A="test.test.csv"; $B=$A; $B=~s/\./-/; # ドットを全置換により[-]に変更。 rename $A,$B; ----- 実行している、「copyAndRename.cgi」が格納されている c:\svriptフォルダに、「test.test.csv」をおいて テストをしてみると正常に起動します。 renameを行なう際のパスの切り方がわかれば 解決できると思うのですが、わかりません。 初心者の質問で恐縮ですが、どなたかお教えください。

    • ベストアンサー
    • CGI
  • Renameするパッチ on Win2000

    あるフォルダに定期的に作成されるファイルがあります。 そのファイル名を特定のファイル名に定期的にrenameしたいと思うのですが、どうすればよいでしょうか・・・パッチとかでcopyで作れるなら簡単でいいので、「定期的に」実行させる方法を教えてもらえないでしょうか。 例えば、 5分後とに000*.fffってファイルができます。 (*はインクリされる数値) それをkotei.fffというファイルに5分後とにRenameする ぜひ教えてください!!

  • Delphi Renameエラー

    すみません、どなたか教えてください。 Delphiでファイル名変更時にエラーが出てしまいます。 処理内容は以下です。 AssignFile(F,'..\TEST\A.TXT'); Rewrite(F); //sには\B.TXTの内容をセット Write(F,s); CloseFile(F); DeleteFile('..\TEST\B.TXT'); Rename(F,'B.TXT'); Renameで、「EInOutErrorクラスの例外を生成しました。'I/Oエラー(183)'」となってしまいます。 どなたかアドバイスをお願い致します。

  • ReNameソフトで設定を保存する

    ReNameソフトとして  「おー瑠璃ねーむ」と「Advanced Renamer」を常用していますが  定型のRenameをする場合、簡単に以前のReName方法を呼び出すような機能が無いように思えます。  (私が知らないだけなら方法を教えてください。)  例えば、ファイル名の文字列で後部から10文字目までを全て削除する場合   この設定を「後部10文字削除」のような名前で保存して呼び出すような機能 又、他のReNameソフトで希望する機能を有するソフトがあれば紹介ください。 利用中のOS : Windows11 Pro

  • ファイルのアップロードについて

    画像ファイルをフォームからアップロードしているのですが どうやっていものかわからないことがあります。 まずは、アップするファイルを選択してもらいファイルサイズや 拡張子チェックに問題がなければ他の項目にエラーがあっても move_uploaded_file関数で一時保存フォルダに画像を保存しています。 一時保存フォルダにアップされた画像は後々タイプスタンプで経過 時間を取得し1日以上経過しているものについては削除するので タイムスタンプの値をファイル名にしています。 全ての項目にエラーもなく確定となった場合にはrename関数で 一時保存フォルダから正式な保存フォルダへファイルを移動しています。 ソースをまとめると // 一時ファイル保存フォルダ $tempdir = '../../upload/temp/'; // 一時保存のファイル名 $mktime = mktime(); $tempname = $mktime . '.jpg'; // ファイル正式保存フォルダ $filedir = '../../upload/image/'; // 正式保存のファイル名 $mictime = microtime(); $filename = substr($mictime, 11) . substr($mictime, 2, 6) . '.jpg'; if (isset($_POST['submit'])) { if ($_FILES['file']['size'] == 0) { // サイズが0なのでエラー } if ($_FILES['file']['error'] == UPLOAD_ERR_OK) { // サイズチェック2 if ($_FILES['file']['size'] > 1024*1024) { // 規定サイズ以上なのでエラー } if (画像に関するエラーがなければ) { // move_uploaded_fileで一時保存フォルダへアップロード } } if (全ての項目にエラーがない場合) { // rename関数で一時保存フォルダから正式な保存フォルダへ移動 } というようにしています。 $_FILEは保持できないので一度でもファイルをアップロードしても 他の項目にエラーがある限りリセットされてしまいサイズが0バイトと なるのでエラーチェックに引っかかり何度も選択しなくてはなりません。 一時保存フォルダに保存されたら再度ファイルを選択しアップロード しない限り他の項目にエラーがあってもファイルのエラーチェックを 通し一時保存フォルダの画像をサムネイル画像としてページ上に表示 させたいのですがどうすればいいのでしょうか? 自分なりに調べてみたのですが参考情報や解決策がみつかりませんでした。 詳しい方がおりましたら宜しくお願い致します!

    • 締切済み
    • PHP
  • rename関数で名前の変更が出来なくなりました

    こんにちは。 C言語でHTMLのひな形を作ってHTMLを作っています。今回、少しC言語のソースを買えただけでC言語のrename関数が失敗するようになってしまいました。 バレが怖いので下記しか書けません。質問なのに申し訳ございません。 if (rename("after_oomoto.txt", html_name)==0){ printf("htmlファイル名変換完了\n"); }else{ printf("htmlファイル名変換不可\n"); printf("レビューファイルがキチンと作成されていない可能性があります。処理を終了します。\n"); system("pause"); // return; } ちなみにhtml_nameは改行とnull文字は付いていません。また、ファイル名にutf-8やshift-jisがあるのかも知りません。 こんな少ない情報ですが、どなたかアドバイス頂けないでしょうか。 よろしくお願いいたします。