ロリポップでPHPを使うときにぶつかるパーミッションの壁(1/2)の続きです。前回はパーミッションの基本を理解しいている範囲でということで書きました。今回はPHP関連のパーミッションの設定について。例を挙げたほうがわかりやすいと思うので、次のようなファイル構成を持つ簡単なアプリケーションの場合を考えます。index.phpは商品データを登録するスクリプトで、商品データをitem.csvというファイルで保存するものだとします。item.csvはdataというディレクトリに入ります。ファイル構成は次のようにします。index.phpdataitem.csvロリポップではPHPファイルは「644」または「604」で動作するようなので特に問題はありません。普通にファイルをサーバーにアップロードするだけでいいようです。できれば「604」にしたようがいいかもしれません。ロリポップサーバーではPHPファイルパーミッションは「604」パーミッションで引っかかるのはPHPから作成されるファイルがあるときです。例のようなものではitem.csvがこれにあたります。このファイルは商品の登録時にindex.phpから読み込みまたは書き込みをする必要があります。データを登録するときにはスクリプトからitem.csvを作成することから始めるかもしれません。例のようなデータファイルやログファイルなどをPHPから作成するときはそのデータを入れておくディレクトリのパーミッションにも注意しなければなりません。このときのディレクトリのパーミッションは「707」になります。しないとPHPからディレクトリ内のファイルにアクセスすることができません。denied」というエラーがでてしまします。~」といったエラーがでるかというと次のことに基づいているようです。モジュール版のPHPは「apache権限」で動作するファイルには誰がそのファイルの持ち主かということを表わす「所有者」という項目があります。(ロリポップFTPではわからないのでFFFTP等で確認。)アップロードしたファイルやディレクトリは所有者が「lolipop.jp-dp+自分のID」という英数字で表わされています。PHPから作成されたファイルは所有者が「apache」になります。よってパーミッションの一番右の桁に「読込み権限」+「書き込み権限」=「6」を与えないとファイルを書き換えることが出来ません。これが「apche権限」で動作するということのようです。ディレクトリに「707」を与えるのも同じ理由だと思います。読み書きするファイルを収納するディレクトリは「707」となります。最後に気づいたことを追記しておきます。PHPからファイルを作成するときはchmod関数でパーミッションを明示するもし、「644」や「604」でファイルを作成してしまった場合、所有者が「apache」のためFTPソフトからパーミッションを「606」等に変更することができない。削除はできるようです。「まだまだ勉強不足で理解が間違っていたり、言葉足らずな部分もあると思うので、間違っている箇所は指摘していただけると幸いです。」モコモコつうしんスコティッシュフォールド「モコ」の日々の様子を写真と動画で紹介してます。ツイートphotograph最近撮った写真たち。LightroomとPhotoshopで加工してます。EOS50D今一番すきなことは愛猫モコの撮影。あとはDIYでいろいろつくったり、20年ぶりのガンプラしたり、ときには山のぼったりしてます。写真はPhotoshopとLightroomでちょこちょこいじってます。