- ベストアンサー
chmod と 所有者apache
毎度、お世話になります。 phpでプログラムを組んでいます。 プログラム上で作成したフォルダに対しては、 ブログラム上で「chmod($dir, 0707)」を実行すると パーミッションが、「707」に変更されますが、 FTP上で新規作成したフォルダに ブログラム上で「chmod($dir, 0707)」を実行しても、 「Operation not permitted 」で出て、(権限がない?) パーミッションが、「707」に変更されません。 どうすれば、変更できますか? 参考、サーバは、ロリポップですが phpで作った場合は、所有者が apache になっています。 FTP上で新規作成した場合は、所有者はブランクです。 よろしくお願いします。
- miracle2006
- お礼率49% (36/73)
- PHP
- 回答数3
- ありがとう数2
- みんなの回答 (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のソフトからのパーミッションの変更もできません。
関連するQ&A
- chmodでパーミッションを変更する権限がないエラー・・・?
レンタルサーバ「ロリポップ」を使用しています。 chmod命令で、ディレクトリやファイルのパーミッションを変更するプログラムを書きました。 chmodr($filename,0700); そうすると以下のようなエラーが表示されます。 Warning: chmod() [function.chmod]: Operation not permitted パーミッションを変更する権限がないために発生していると思うのですが、どうすればプログラムからパーミッションを変更することができるのでしょうか? ちなみにperlでは可能でした。 よろしくお願いいたします。
- ベストアンサー
- PHP
- chmod()で所有者が変わってしまう
Perlでは新規ファイルを作成してchmod()で属性を変更しても所有者は変わりませんでした。 FFFTPでは、 □/public_html/testdir 名前 属性 所有者 logwrite.cgi 705 1234 log200402.log 700 1234 となるのですが、PHPではFFFTPが、 □/public_html/testdir 名前 属性 所有者 logwrite.php 705 1234 log200402.log 700 99 のように、所有者が変わってしまうのです。 PerlからPHPの移植がうまくいっていないのです。 logwrite.phpのその処理の部分は $fp = fopen($logfile, "w"); fwrite($fp, $logdata); fclose($fp); chmod($logfile, 0700); です。このあとPHPで所有者を99から1234に変更できれば よいのですが、方法が分かりません。 そうでなくとも、所有者が1234のままで chmod($logfile, 0700);が完了できれば問題ありません。 Perlではchmod()で所有者が変わらなかったのに、 PHPではchmod()によって所有者が変わってしまって 元の所有者に戻せなくて困っています。
- 締切済み
- PHP
- chmod(): Operation not pe
PHPで、hogeディレクトリを777へ変更したいのですが chmod("./hoge", 0777); とすると、下記エラーになります Warning: chmod(): Operation not permitted どうしたら良いでしょうか?
- ベストアンサー
- PHP
- PHPでchmod()を使えるようにする方法
サーバー初心者です。ご存じの方おられましたら教えて頂けたら嬉しいです。 PHPでchmod()をすると、 Operation not permitted というエラーが表示されます。 apacheにその権限が無いと思うのですが、 こういった場合はどのように対応したらいいのでしょう。。 環境は CentOS5.3 PHP5.3 になります。 よろしくお願いします。
- ベストアンサー
- Linux系OS
- chmodでのパーミッション
実行すると、同じディレクトリにあるディレクトリとその中のファイルを同じ階層にディレクトリを新規に作って、その中のファイルを全部コピーするスクリプトを組んでいます。 コピーはうまくいったのですが、パーミッションの設定がうまくいきません。 例えば @chmod("$dir/xxx.cgi",0755)or die("エラー"); と書くと、パーミッションは363になってしまいます。 5ファイルくらいあるのですが、他のパーミッション(例えば666など)も137になってしまいます。 Webを検索してもこういった事例にはおめにかからないのですが、私の使っている2つのサーバーで、どちらも同様の結果でした。 何がいけないのでしょうか? よろしくお願いいたします。 #ついでにmkdirも作成はできるのですが、パーミッションが必ず755になってしまいます。 #作成されたディレクトリやファイルのownerは、1つめのサーバーではnobody、もう一つのサーバーではログインユーザーになります。 #サーバーはどちらもLinuxです。 #PHPのヴァージョンは、1つめが4.3.1、2つめが4.3.4です。 よろしくお願いいたします。
- ベストアンサー
- PHP
- PHPを使ってのサーバ上ファイルのパーミッションの変更方法
PHPおよびPEARを使って、FTPサーバ上のファイルのパーミッションの変更をしたいと考えています。 具体的には、 PEARを利用し、$ftp->put()でアップしたファイル($filename)を、700に属性変更したいのです。 ソース上は、 chmod($filename, 0700); と書いています。 ところが、実行すると以下のようなワーニングが出ます。 「Warning: chmod() [function.chmod]: No such file or directory in ・・・」 今度は、 $ftp->chmod($remote_folder[$i]. $filename, 0700); と書いて実行してみるとエラーは出ません。 しかし、パーミッションは変わっていませんでした。 次に、 「PEARの命令を使って実行すればいいんだ!」と考えて、 $ftp->execute(chmod($filename, 0700)); と書いて実行してみました。 結果は、最初と同じ、 「Warning: chmod() [function.chmod]: No such file or directory in ・・・」 というワーニングでした。 いったい何がいけないいんでしょうか(--; phpのマニュアルを見ると、chmodに、「この関数では、 リモートファイルを使用することはできません。」とあります。 が、教えて!gooなどで検索してみると、chmodを使って普通にサーバ上のファイルのパーミッションを変更している書き込みが見られます。 正直、混乱しているというか、よく分からない状態です。 皆様、気がついた点などありましたら、是非、アドバイスお願い致します。
- ベストアンサー
- PHP
- chmod 教えてください
PHP素人です。 使用しているサーバーの制限で、アップロードした画像のパーミッションが600になってしまい、画像が見れません。chmodを使用すると解決できますとのことだったので、色々調べてchmod{"$dir/$fname",0604}と入れてみたのですが、場所が違うのか、構文の書き方が違うのか、うまくいきません。 根本的なところから間違っているのかもしれませんが、どうかご教授よろしくお願いします。 $mes = ''; if(!empty($_POST['dir'])){ $dir = EXTRACT_PATH.'/'.$lid.'/thumbnail/'.$myts->stripSlashesGPC($_POST['dir']); if(!is_dir($dir) && !mkdir($dir, 0777)){ $mes = _ND_DIR_FALSE;} }else{ $mes = _ND_CONFIG_INPUTDIR;} if(!empty($mes)) redirect_header(MOD_URL.'/config.php?lid='.$lid.'&mode=thumb', 1, $mes); if(is_uploaded_file($_FILES['userfile']['tmp_name'])){ $fname = $_FILES['userfile']['name']; $tmp_name = $_FILES['userfile']['tmp_name']; if(preg_match("/.*(\.gif)$/i", $fname)){ if(move_uploaded_file($tmp_name, $dir.'/'.$fname)) { $mes = _ND_CONFIG_IMGUPOK; }else{ $mes = _ND_CONFIG_IMGUPNG;} }else{ $mes = _ND_CONFIG_UPSUF;} }else{ $mes = _ND_CONFIG_NFILESELECT;} redirect_header(MOD_URL.'/config.php?lid='.$lid.'&mode=thumb', 1, $mes); break;
- ベストアンサー
- PHP
- 別ユーザ所有のディレクトリ内にファイル作成できない
こんばんは。 タイトルのとおりですが、まずPHPでディレクトリを作成し、 その中にindex.htmlを作成しようとしているのですが上手くいきません。 PHPで作成したディレクトリの所有者はapacheになっているためかと思い、 実際にFTPを通して自分で作成したディレクトリの中にindex.htmlを作成したところ上手くいきました。 ディレクトリのパーミッションはいずれもスクリプトにより0777を指定しています。 このように、PHPのみでディレクトリを作成し、その中にファイルを作成する といったことが出来ずにいます。解決策等ございましたらお教えください。 参考までに、ソースを掲載しておきます。 これを設置するディレクトリのパーミッションは0777にしてみましたが、出力は「fopen error」になります。 <?php $path = "./dir/"; if(mkdir($path, 0, true)){ chmod($path, 0777); if($fp = fopen($path."index.html", "w")){ fputs($fp, $put); fclose($fp); print "Created!"; }else{ print "fopen error"; } }else{ print "mkdir error"; } ?>
- ベストアンサー
- PHP
- cygwinでchmodやsetfaclを用いてのパーミッション変更が
cygwinでchmodやsetfaclを用いてのパーミッション変更ができなくなってしまいました。「chmod 755 hoge」とコマンドを打つと特にエラーは起きないのですが結果としてパーミッションが変化しません。以前はきちんと変更できていました。 思い当たる節としてはsshdを入れようと思って「ssh-host-config」を実行した(結果としてエラーとなりsshdは入れられなかった)ことくらいです。 cygwinでchmodが使えなくなってしまう原因としては何が考えられるのでしょうか? 環境変数CYGWIN=ntsecというのは試してみましたが解決しませんでした…。 ちなみにcygwinのバージョンは1.7.5です。
- ベストアンサー
- その他([技術者向] コンピューター)
- 所有者apacheでパーミッション644
PHP初心者です レンタルサーバーを使ってます 自分のサイトの更新をパソコンを使わないでもPSPのブラウザからすることができるPHPのプログラムを作っています エディタや、ファイラーのようなものはうまく作れたと思うのですが、それを使ってページを作ってそのページをFFFTPで見てみると所有者がapache、パーミッションが644になっていました。 apacheとはPHPのことですか? 644ということはapacheから書き込みができるということでしょうか? 同じサーバーを使っている人がPHPなどを使ってこのページを改ざんしたりすることができてしまったりするのでしょうか?
- ベストアンサー
- PHP
お礼
ご回答、ありがとうござせいます。 自分でつくったフォルダ内にファイルを作れることが、 セキュリティ上問題があるとは、思えませんが・・・ それなら、フォルダを作ることも禁止すればいいと思います。 でも、そのサーバ会社の方針なら、仕方ありません。 先に、FTPソフトでファイルをアップロードしておき、 そのファイルを更新することにしました。