- ベストアンサー
chmod と 所有者apache
毎度、お世話になります。 phpでプログラムを組んでいます。 プログラム上で作成したフォルダに対しては、 ブログラム上で「chmod($dir, 0707)」を実行すると パーミッションが、「707」に変更されますが、 FTP上で新規作成したフォルダに ブログラム上で「chmod($dir, 0707)」を実行しても、 「Operation not permitted 」で出て、(権限がない?) パーミッションが、「707」に変更されません。 どうすれば、変更できますか? 参考、サーバは、ロリポップですが phpで作った場合は、所有者が apache になっています。 FTP上で新規作成した場合は、所有者はブランクです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>これも「SAFE MODE」に関係しますが、自分でつくったフォルダ内にファイルを >作れないのですか? この状態ですと管理者からSAFE MODEを使って権限が与えられてない状態ですね。 httpd.confとphp.iniで設定されているので一般ユーザからは変更できません。 作成可能な階層なのか管理者様に問い合わせるといいかもしれません。 レンタルサーバの場合はファイル等を作成許可されている階層が指定されている場合が多いです。 // そうすることでファイルの容量制限とかを測りやすくしています。
その他の回答 (2)
- wp_
- ベストアンサー率54% (132/242)
apacheで動かすユーザとFTPでログインするユーザは別物です。 レンタルサーバですとそれぞれのユーザにそれぞれの制限をかけられるのが常です。 // 制限かけませんと同一サーバ内の別アカウントの人のファイルまで // 見れることになりますから。 php上で作成したファイルはphp上で、ftp上で作ったファイルはftp上でしか扱えないという認識でいきましょう。 FTPで作成したファイルはphp上で「読み込みは出来るけど書き込み・変更は出来ないもの」 という前提で開発を行うべきかと思います。 //別の要因も考えられなくはないですが、レンタルサーバなら単純にユーザの権限の問題だと思いますよ
補足
ご回答ありがとうございます。 関連する質問ですが、 今度は、別のサーバで、 PHP上でフォルダをパーミッションを707で作り、(mkdir) そのまま、 fopen() して書き込もうとすると Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 1078 is not allowed to access というメッセージができす。 $out = fopen("../$dir/a.txt", "w"); これも「SAFE MODE」に関係しますが、自分でつくったフォルダ内にファイルを 作れないのですか?
- mookun2007
- ベストアンサー率59% (28/47)
FTPで、作成したフォルダのパーミッションを変更すれば良いのでは? どんなFTPソフトを使用しているのかは知りませんが、 有名どころでFFFTPなどを使用しているのでしたら、 変更したいフォルダを右クリック→「属性変更」でパーミッションの変更ができます。
お礼
上の補足は間違いでした。変更はできます。 ただ、FTPでフォルダを作っても、書き込み権限をパーミッション設設定し忘れていた場合、スクりプト側で改めて、設定しようとプログラムを組んだのです。 では、パーミッションが「707」でない場合、変更を促すメッセージを出したのですが、パーミッションを取得する関数はありますか?
補足
所有者が異なるので、FTPのソフトからのパーミッションの変更もできません。
お礼
ご回答、ありがとうござせいます。 自分でつくったフォルダ内にファイルを作れることが、 セキュリティ上問題があるとは、思えませんが・・・ それなら、フォルダを作ることも禁止すればいいと思います。 でも、そのサーバ会社の方針なら、仕方ありません。 先に、FTPソフトでファイルをアップロードしておき、 そのファイルを更新することにしました。