splfileinfo.openfile 抜本的理解。新人日誌としては最後になるのかなぁ…が、備忘録

cake php新入社員として頑張っていく所存のKodaです、よろしくお願いします。
しかし、仕事の所感でも良いのですが、技術として入社して中途半端に技術情報を終えるのが非常に気持ちが悪いので、前回も問題の解消をもって締めに致します。

さて、前回の問題ですが調べてみると同じ問題にぶつかっている人も多々あり、私だけの問題じゃないようです。

それで、みなさん結構対処法とかは掲載されてるのですが、素人相手に根本的な問題がいまいちわからなかったのでそれをまとめてみます。

  • 新しいアプリをつくろうと、既存のアプリフォルダをコピー(したのであろう)
  • コピーして、コードを表示するとTmp系の書込みあたりで書き込み権限の問題でエラーが発生

ということだと思います。

  • 対処法として、設定ファイルをいじり、パーミッションを変えて(0666)出力されるようにした。

で、OK。

 

では、なぜこのような問題が発生するか?

cp -ap DIR1 DIR2

のように、ディレクトリもまんま、権限もまんまコピーしちゃうオプションで、このような問題が突然起こるのか謎?…どうもLinuxの仕様みたいでした。

 

apache apache abcdifg.tmp

みたく、tmpディレクトリにある オーナーがapache abcdifg.tmp のファイルを一般ユーザーで いくら cp -ap しても

hoge hoge  abcdifg.tmp

と、オーナーが変わっちゃうんです\(◎o◎)/!

 

ってことはアプリをコピーする時は端的な解決法としては

su Root権限で入って cp -ap DIR1 DIR2 することで抜本的な解決方法になります。

私の環境はsuできるので、色々な面倒が嫌なのでcpしなおして問題解決でした。

 

<以下補足 未検証/推測>

ところが、アプリ開発者が必ずしもRoot権限を割当らるかというとそんなことわ無いわけで、設定ファイルから0666のmaskをするという手法が出てきます。

この問題点は、すでに0664権限のtmpファイルを吐き出した状態だとエラーが出るので一度綺麗にするとかパーミッションを変えるとかしないとダメみたいです。

関連してそうなエントリ

koda