rename() で Operation not permitted という WARNING が出た
PHP: rename - Manual
こちらファイルの移動(linuxのコマンドで言うところのmvのような操作)を行うためのPHPの関数。
このrename()を使用したところ Operation not permittedというWARNINGが発生したので、調べたことをメモ。
そもそもの話、このwarningが出てもファイルの移動自体は正常に行われていた。
じゃあなんでwarningなんて吐くの?ということでちょっと調べてみた。
ググると次のような英語のページがヒット。
http://bugs.php.net/bug.php?id=50676
rename() can only work "normally" when operating on the same volume.
同じディスクのボリュームでのみ「正常に」動くよ、ってことらしい。
確認したところ(dfコマンドで!)確かに違うボリュームへの移動しようとしてた。
まぁこれでwarningの理由はわかったんだけど、すごく気持ち悪い。。
さきほどのページでバグレポートを書いた人が
And as I pointed out in the original bug-report, the source-file actually is deleted, so there is no need for the error message.
ちゃんと動いているんだから、エラーメッセージはく必要ないじゃん!!(意訳)
って言っているのに激しく同意。だってうざいんだもん。
ちなみに
[SOLVED] PHP rename() not permitted
ここで言っているようにrename()を以下のような処理に変えておくのがきっとベスト。
if( copy('/home/frontend/uploadclip.xml', '/var/media/45ecfe0fb82968cd0244666d3b92ac4a2658d844') ) { unlink('/home/frontend/uploadclip.xml'); }
< |