重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

毎度、お世話になります。

phpでプログラムを組んでいます。

プログラム上で作成したフォルダに対しては、
ブログラム上で「chmod($dir, 0707)」を実行すると
パーミッションが、「707」に変更されますが、
FTP上で新規作成したフォルダに
ブログラム上で「chmod($dir, 0707)」を実行しても、
「Operation not permitted 」で出て、(権限がない?)
パーミッションが、「707」に変更されません。
どうすれば、変更できますか?

参考、サーバは、ロリポップですが
phpで作った場合は、所有者が apache になっています。
FTP上で新規作成した場合は、所有者はブランクです。

よろしくお願いします。

A 回答 (3件)

>これも「SAFE MODE」に関係しますが、自分でつくったフォルダ内にファイルを


>作れないのですか?
この状態ですと管理者からSAFE MODEを使って権限が与えられてない状態ですね。
httpd.confとphp.iniで設定されているので一般ユーザからは変更できません。
作成可能な階層なのか管理者様に問い合わせるといいかもしれません。
レンタルサーバの場合はファイル等を作成許可されている階層が指定されている場合が多いです。
// そうすることでファイルの容量制限とかを測りやすくしています。

参考URL:http://jp2.php.net/features.safe-mode
    • good
    • 0
この回答へのお礼

ご回答、ありがとうござせいます。
自分でつくったフォルダ内にファイルを作れることが、
セキュリティ上問題があるとは、思えませんが・・・
それなら、フォルダを作ることも禁止すればいいと思います。
でも、そのサーバ会社の方針なら、仕方ありません。
先に、FTPソフトでファイルをアップロードしておき、
そのファイルを更新することにしました。

お礼日時:2007/11/11 18:42

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」に関係しますが、自分でつくったフォルダ内にファイルを
作れないのですか?

補足日時:2007/11/09 18:05
    • good
    • 0

FTPで、作成したフォルダのパーミッションを変更すれば良いのでは?


どんなFTPソフトを使用しているのかは知りませんが、
有名どころでFFFTPなどを使用しているのでしたら、
変更したいフォルダを右クリック→「属性変更」でパーミッションの変更ができます。

この回答への補足

所有者が異なるので、FTPのソフトからのパーミッションの変更もできません。

補足日時:2007/11/09 17:40
    • good
    • 0
この回答へのお礼

上の補足は間違いでした。変更はできます。
ただ、FTPでフォルダを作っても、書き込み権限をパーミッション設設定し忘れていた場合、スクりプト側で改めて、設定しようとプログラムを組んだのです。
では、パーミッションが「707」でない場合、変更を促すメッセージを出したのですが、パーミッションを取得する関数はありますか?

お礼日時:2007/11/09 17:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!